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