C#で下のように、配列から連続している値をグループ化する処理のサンプルコードです。
【入力データ】
[1, 1, 2, 2, 1, 1, 3, 3, 1]
【出力データ】
[1, 2, 1, 3, 1]
スポンサーリンク
サンプルコード(ごりごり組む)
率直にFor文などを駆使してやる方法です。なんかゴチャゴチャして見にくいですね。
int prev = source[0];
int[] groupAary = new int[0];
for (int i = 1; i < source.Length; i++) {
if (prev != source[i]) {
Array.Resize (ref groupAary, groupAary.Length + 1);
groupAary[groupAary.Length - 1] = prev;
prev = source[i];
}
}
Array.Resize (ref groupAary, groupAary.Length + 1);
groupAary[groupAary.Length - 1] = prev;
サンプルコード(Linqを使ってみる)
Linqを使うと1行で書けます。
var result = source.Where ((element, index) => index == 0 || element != source[index - 1]);
EOF
センサから大量のデータを取得する時に、連続したデータを取り除いて、どのように値が変化するのかを見る時に作ったコードです。
需要はないかも。。。
0 件のコメント:
コメントを投稿