前提・実現したいこと
ジャグ配列でのLINQの扱い方を勉強しています。
次のようなジャグ配列とindex=2が与えられていた時、
C#
1 int[][] cells = new int[][] 2 { 3 new int[]{ 0, 0, 0, 0}, //0 4 new int[]{ 0, 0, 0, 0}, //1 5 new int[]{ 1, 1, 1, 0}, //index=2 6 new int[]{ 0, 1, 1, 1}, //3 7 };
index=2と3の配列を縦方向に要素を比較して、1と1の要素で揃っているindex=2の配列のインデックスを全て格納した配列を
取得する処理をLINQで実装することはできますか?
この場合ですと、index=2の配列のインデックス1と2を格納した配列を取得するような処理です。
(やりたいことの説明が下手ですみません。試したことでLINQじゃない方法で処理を実装しています)。
イメージとしては下記です。
C#
1 int[][] cells = new int[][] 2 { 3 new int[]{ 0, 0, 0, 0}, //0 4 new int[]{ 0, 0, 0, 0}, //1 5 new int[]{ 1, 1, 1, 0}, //index=2 6 × 〇 〇 × ←縦に1と1が揃っている〇のインデックス、1と2を格納した配列を取得。 7 new int[]{ 0, 1, 1, 1}, //3 8 };
試したこと
LINQでの実装を考えましたが、わかりませんでした。
LINQで実装可能かどうかもわかりません。
LINQ以外の方法では、下記のコードで実装できました。
C#
1 int[][] cells = new int[][] 2 { 3 new int[]{ 0, 0, 0, 0}, //0 4 new int[]{ 0, 0, 0, 0}, //1 5 new int[]{ 1, 1, 1, 0}, //index=2 6 new int[]{ 0, 1, 1, 1}, //3 7 }; 8 9 List<int> indexlist = new List<int>(); 10 int index = 2; 11 for(int i=0; i<cells[index].Length; i++){ 12 if(cells[index][i]==1 && cells[index+1][i]==1){ 13 indexlist.Add(i); 14 } 15 } 16 int[] indexarr = indexlist.ToArray();
ご教示よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/14 05:21
2019/02/14 05:34
2019/02/14 05:42
退会済みユーザー
2019/02/14 16:52
2019/02/15 00:02 編集
退会済みユーザー
2019/02/17 09:28