teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2019/02/01 23:40

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -63,4 +63,27 @@
63
63
  .Where(a => a.SequenceEqual(comparison))
64
64
  .Select(a => a.Key)
65
65
  .ToArray();
66
+ ```
67
+
68
+ # 追記
69
+
70
+ 多次元配列の別解
71
+
72
+ ```C#
73
+ var cells = new int[,]
74
+ {
75
+ { 0, 0, 0 },
76
+ { 0, 0, 0 },
77
+ { 1, 1, 0 },
78
+ { 0, 0, 0 },
79
+ { 1, 1, 1 },
80
+ };
81
+ var comparison = new int[] { 0, 0, 0 };
82
+ int[] indexarr = Enumerable
83
+ .Range(0, cells.GetLength(0))
84
+ .Where(index => Enumerable
85
+ .Range(0, cells.GetLength(1))
86
+ .Select(a => cells[index, a])
87
+ .SequenceEqual(comparison))
88
+ .ToArray();
66
89
  ```

2

追記

2019/02/01 23:40

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -40,4 +40,27 @@
40
40
  .Select((a, i) => a.SequenceEqual(comparison) ? i : -1)
41
41
  .Where(a => a != -1)
42
42
  .ToArray();
43
+ ```
44
+
45
+ # 追記
46
+
47
+ 多次元配列の別解
48
+
49
+ ```C#
50
+ var cells = new int[,]
51
+ {
52
+ { 0, 0, 0 },
53
+ { 0, 0, 0 },
54
+ { 1, 1, 0 },
55
+ { 0, 0, 0 },
56
+ { 1, 1, 1 },
57
+ };
58
+ var comparison = new int[] { 0, 0, 0 };
59
+ int[] indexarr = cells
60
+ .Cast<int>()
61
+ .Select((value, index) => new { value, index })
62
+ .GroupBy(a => a.index / cells.GetLength(1), a => a.value)
63
+ .Where(a => a.SequenceEqual(comparison))
64
+ .Select(a => a.Key)
65
+ .ToArray();
43
66
  ```

1

追記

2019/02/01 23:25

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -20,4 +20,24 @@
20
20
  .Select((a, i) => a.SequenceEqual(comparison) ? i : -1)
21
21
  .Where(a => a != -1)
22
22
  .ToArray();
23
+ ```
24
+
25
+ # 追記
26
+
27
+ ジャグ配列を使った場合
28
+
29
+ ```C#
30
+ var cells = new int[][]
31
+ {
32
+ new[] { 0, 0, 0 },
33
+ new[] { 0, 0, 0 },
34
+ new[] { 1, 1, 0 },
35
+ new[] { 0, 0, 0 },
36
+ new[] { 1, 1, 1 },
37
+ };
38
+ var comparison = new int[] { 0, 0, 0 };
39
+ int[] indexarr = cells
40
+ .Select((a, i) => a.SequenceEqual(comparison) ? i : -1)
41
+ .Where(a => a != -1)
42
+ .ToArray();
23
43
  ```