回答編集履歴
1
コメントを追加、スペルミス(overrap→overlap)を修正
test
CHANGED
@@ -2,19 +2,21 @@
|
|
2
2
|
|
3
3
|
``` python
|
4
4
|
|
5
|
-
n = 4
|
5
|
+
n = 4 # 重ね合わせ対象の1リストに含まれる要素数(サンプルのデータはすべて4個だったので。)
|
6
6
|
|
7
7
|
new_list=[]
|
8
8
|
|
9
|
-
over
|
9
|
+
overlap_num = n//2 # 重ね合わせのレートが50% (// は、割り切れない場合を考慮して整数にしています)
|
10
10
|
|
11
11
|
for old in old_list:
|
12
12
|
|
13
|
-
if len(new_list) > over
|
13
|
+
if len(new_list) > overlap_num:
|
14
14
|
|
15
|
-
prefix_index = len(new_list) - over
|
15
|
+
prefix_index = len(new_list) - overlap_num # 重ね合わせをしない、すでに決まった先頭部分のインデックスを探査
|
16
16
|
|
17
|
+
# 重ね合わせをしないすでに決まった先頭部分のリスト + 重ね合わせする部分のリスト + 重ね合わせしない追加分のリスト
|
18
|
+
|
17
|
-
new_list = new_list[:prefix_index] + [ new_list[prefix_index + idx] + old[idx] for idx in range(over
|
19
|
+
new_list = new_list[:prefix_index] + [ new_list[prefix_index + idx] + old[idx] for idx in range(overlap_num)] + old[overlap_num:]
|
18
20
|
|
19
21
|
else:
|
20
22
|
|