回答編集履歴

5

追記

2019/01/18 10:44

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -68,13 +68,15 @@
68
68
 
69
69
 
70
70
 
71
+ おまけ
72
+
71
73
  ---
72
74
 
73
- 遊び。[Wandbox](https://wandbox.org/permlink/Z1eURC9Rzduaykpf)
75
+ 遊び。[Wandbox](https://wandbox.org/permlink/sUXxKujzSuKDdmYS)
74
76
 
75
77
  ```Java
76
78
 
77
- List<Double> data = IntStream.iterate(0, pre -> pre+chunkSize)
79
+ var data = IntStream.iterate(0, pre -> pre+chunkSize)
78
80
 
79
81
  .takeWhile(val -> val < src.size())
80
82
 
@@ -99,3 +101,47 @@
99
101
  ;
100
102
 
101
103
  ```
104
+
105
+
106
+
107
+ ---
108
+
109
+ 遊び2。[Wandbox](https://wandbox.org/permlink/rHzztOxTuGLvFx9B)
110
+
111
+ - リストsumsを追加
112
+
113
+ - collectしたリストの可変性を保証
114
+
115
+
116
+
117
+ ```Java
118
+
119
+ var sums = IntStream.iterate(0, pre -> pre + chunkSize)
120
+
121
+ .takeWhile(n -> n < src.size())
122
+
123
+ .mapToDouble(
124
+
125
+ val -> src.subList(val, val + chunkSize).stream()
126
+
127
+ .mapToDouble(n -> n)
128
+
129
+ .sum()
130
+
131
+ )
132
+
133
+ .boxed()
134
+
135
+ .collect(Collectors.toCollection(ArrayList::new))
136
+
137
+ ;
138
+
139
+ var data = sums.stream()
140
+
141
+ .map(val -> val / chunkSize)
142
+
143
+ .collect(Collectors.toCollection(ArrayList::new))
144
+
145
+ ;
146
+
147
+ ```

4

修正

2019/01/18 10:43

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -70,11 +70,13 @@
70
70
 
71
71
  ---
72
72
 
73
- 遊び。
73
+ 遊び。[Wandbox](https://wandbox.org/permlink/Z1eURC9Rzduaykpf)
74
74
 
75
75
  ```Java
76
76
 
77
- List<Double> data = IntStream.iterate(0, val -> val < src.size(), pre -> pre+chunkSize)
77
+ List<Double> data = IntStream.iterate(0, pre -> pre+chunkSize)
78
+
79
+ .takeWhile(val -> val < src.size())
78
80
 
79
81
  .mapToDouble(
80
82
 
@@ -84,7 +86,7 @@
84
86
 
85
87
  .average()
86
88
 
87
- .orElse(0.)
89
+ .getAsDouble()
88
90
 
89
91
  )
90
92
 

3

追記

2019/01/18 10:20

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -65,3 +65,35 @@
65
65
  3.5
66
66
 
67
67
  ```
68
+
69
+
70
+
71
+ ---
72
+
73
+ 遊び。
74
+
75
+ ```Java
76
+
77
+ List<Double> data = IntStream.iterate(0, val -> val < src.size(), pre -> pre+chunkSize)
78
+
79
+ .mapToDouble(
80
+
81
+ val -> src.subList(val, val+chunkSize).stream()
82
+
83
+ .mapToDouble(n -> n)
84
+
85
+ .average()
86
+
87
+ .orElse(0.)
88
+
89
+ )
90
+
91
+ //.peek(System.out::println)
92
+
93
+ .boxed()
94
+
95
+ .collect(Collectors.toList())
96
+
97
+ ;
98
+
99
+ ```

2

修正

2019/01/18 10:13

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -2,32 +2,66 @@
2
2
 
3
3
  ```Java
4
4
 
5
- // 名前が分かりづらいので、data2の名前はsrcに変更
5
+ import java.util.*;
6
6
 
7
7
 
8
8
 
9
- final int chunkSize = 2;
10
9
 
10
+
11
+ class Main {
12
+
13
+ public static void main(String[] args) {
14
+
15
+ List<Double> src = List.of(1.0, 2.0, 3.0, 4.0);
16
+
17
+
18
+
19
+ final int chunkSize = 2;
20
+
11
- assert src.size() % chunkSize == 0: "分割幅が不適切";
21
+ assert src.size() % chunkSize == 0: "分割幅が不適切";
12
22
 
13
23
 
14
24
 
15
- List<Double> data = new ArrayList<>();
25
+ List<Double> data = new ArrayList<>();
16
26
 
17
- for (int k = 0; k < src.size(); k += chunkSize) {
27
+ for (int i = 0; i < src.size(); i += chunkSize) {
18
28
 
19
- double sum = 0;
29
+ double sum = 0;
20
30
 
21
31
 
22
32
 
23
- for (int i = 0; i < chunkSize; i++) {
33
+ for (int j = 0; j < chunkSize; ++j) {
24
34
 
25
- sum += src.get(i+k);
35
+ sum += src.get(i+j);
26
36
 
27
- }
37
+ }
28
38
 
29
- data.add(sum / chunkSize);
39
+ data.add(sum / chunkSize);
40
+
41
+ }
42
+
43
+
44
+
45
+ for(double e: data) {
46
+
47
+ System.out.println(e);
48
+
49
+ }
50
+
51
+ }
30
52
 
31
53
  }
32
54
 
33
55
  ```
56
+
57
+
58
+
59
+ **実行結果** [Wandbox](https://wandbox.org/permlink/XOEcc7ZrDpvO4Fud)
60
+
61
+ ```
62
+
63
+ 1.5
64
+
65
+ 3.5
66
+
67
+ ```

1

追記

2019/01/18 09:54

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -6,11 +6,13 @@
6
6
 
7
7
 
8
8
 
9
- List<Double> data = new ArrayList<>();
10
-
11
9
  final int chunkSize = 2;
12
10
 
11
+ assert src.size() % chunkSize == 0: "分割幅が不適切";
13
12
 
13
+
14
+
15
+ List<Double> data = new ArrayList<>();
14
16
 
15
17
  for (int k = 0; k < src.size(); k += chunkSize) {
16
18