回答編集履歴

4

dictionary から空の要素を除外した

2017/05/20 12:41

投稿

hidori
hidori

スコア402

test CHANGED
@@ -3,14 +3,6 @@
3
3
  void Main()
4
4
 
5
5
  {
6
-
7
- var dictionary = Enumerable.Range(0, 10)
8
-
9
- .Select(_ => new { Index = _, List = new List<int>() })
10
-
11
- .ToDictionary(_ => _.Index, _ => _.List);
12
-
13
-
14
6
 
15
7
  IEnumerable<int> Generate(int maxValue)
16
8
 
@@ -32,23 +24,27 @@
32
24
 
33
25
 
34
26
 
35
- foreach (var value in Generate(101))
27
+ var dictionary = Generate(101)
36
28
 
37
- {
29
+ .Select(value =>
38
30
 
31
+ {
32
+
39
- Console.WriteLine($"0~100の値を出力:{value}");
33
+ Console.WriteLine($"0~100の値を出力:{value}");
34
+
35
+ return value;
36
+
37
+ })
38
+
39
+ .TakeWhile(value => value != 0)
40
+
41
+ .GroupBy(value => value % 10)
42
+
43
+ .ToDictionary(_ => _.Key, _ => _.ToList());
40
44
 
41
45
 
42
46
 
43
- if (value == 0) break;
44
-
45
- dictionary[value % 10].Add(value);
46
-
47
- }
48
-
49
-
50
-
51
- foreach (var i in Enumerable.Range(0, 10))
47
+ foreach (var i in dictionary.Keys.OrderBy(_ => _))
52
48
 
53
49
  {
54
50
 

3

List<int>\[\] を Dictionary<int, List<int>> に修正した

2017/05/20 12:41

投稿

hidori
hidori

スコア402

test CHANGED
@@ -4,7 +4,11 @@
4
4
 
5
5
  {
6
6
 
7
+ var dictionary = Enumerable.Range(0, 10)
8
+
7
- var rows = Enumerable.Range(0, 10).Select(_ => new List<int>()).ToArray();
9
+ .Select(_ => new { Index = _, List = new List<int>() })
10
+
11
+ .ToDictionary(_ => _.Index, _ => _.List);
8
12
 
9
13
 
10
14
 
@@ -14,7 +18,7 @@
14
18
 
15
19
  var random = new Random();
16
20
 
17
-
21
+
18
22
 
19
23
  while (true)
20
24
 
@@ -26,7 +30,7 @@
26
30
 
27
31
  }
28
32
 
29
-
33
+
30
34
 
31
35
  foreach (var value in Generate(101))
32
36
 
@@ -38,17 +42,17 @@
38
42
 
39
43
  if (value == 0) break;
40
44
 
41
- rows[value % 10].Add(value);
45
+ dictionary[value % 10].Add(value);
42
46
 
43
47
  }
44
48
 
45
49
 
46
50
 
47
- for (var i = 0; i < rows.Length; i++)
51
+ foreach (var i in Enumerable.Range(0, 10))
48
52
 
49
53
  {
50
54
 
51
- Console.WriteLine($"一の位が{i} : {string.Join(" ", rows[i].Select(v => v.ToString()))}");
55
+ Console.WriteLine($"一の位が{i} : {string.Join(" ", dictionary[i])}");
52
56
 
53
57
  }
54
58
 

2

リファクタリングした

2017/05/20 07:02

投稿

hidori
hidori

スコア402

test CHANGED
@@ -6,35 +6,49 @@
6
6
 
7
7
  var rows = Enumerable.Range(0, 10).Select(_ => new List<int>()).ToArray();
8
8
 
9
+
10
+
11
+ IEnumerable<int> Generate(int maxValue)
12
+
13
+ {
14
+
15
+ var random = new Random();
16
+
17
+
18
+
19
+ while (true)
20
+
21
+ {
22
+
23
+ yield return random.Next(maxValue);
24
+
25
+ }
26
+
27
+ }
28
+
9
29
 
10
30
 
11
- var random = new Random();
31
+ foreach (var value in Generate(101))
32
+
33
+ {
34
+
35
+ Console.WriteLine($"0~100の値を出力:{value}");
12
36
 
13
37
 
14
38
 
15
- while (true)
16
-
17
- {
18
-
19
- var value = random.Next(101);
20
-
21
- Console.WriteLine($"0~100の値を出力:{value}");
22
-
23
-
24
-
25
39
  if (value == 0) break;
26
40
 
27
- rows[value - ((value / 10) * 10)].Add(value);
41
+ rows[value % 10].Add(value);
28
42
 
29
43
  }
30
44
 
31
45
 
32
46
 
33
- foreach (var row in rows.Select((v, i) => new { Index = i, Values = v }))
47
+ for (var i = 0; i < rows.Length; i++)
34
48
 
35
49
  {
36
50
 
37
- Console.WriteLine($"一の位が{row.Index} : {string.Join(" ", row.Values.Select(v => v.ToString()))}");
51
+ Console.WriteLine($"一の位が{i} : {string.Join(" ", rows[i].Select(v => v.ToString()))}");
38
52
 
39
53
  }
40
54
 

1

values と Values が混在して見苦しいので改名した

2017/05/20 00:18

投稿

hidori
hidori

スコア402

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  {
6
6
 
7
- var values = Enumerable.Range(0, 10).Select(_ => new List<int>()).ToArray();
7
+ var rows = Enumerable.Range(0, 10).Select(_ => new List<int>()).ToArray();
8
8
 
9
9
 
10
10
 
@@ -24,13 +24,13 @@
24
24
 
25
25
  if (value == 0) break;
26
26
 
27
- values[value - ((value / 10) * 10)].Add(value);
27
+ rows[value - ((value / 10) * 10)].Add(value);
28
28
 
29
29
  }
30
30
 
31
31
 
32
32
 
33
- foreach (var row in values.Select((v, i) => new { Index = i, Values = v }))
33
+ foreach (var row in rows.Select((v, i) => new { Index = i, Values = v }))
34
34
 
35
35
  {
36
36