回答編集履歴

1

追記

2020/12/22 17:45

投稿

otn
otn

スコア85893

test CHANGED
@@ -81,3 +81,67 @@
81
81
  ```
82
82
 
83
83
  ⇒ 代入式無いとたるい感じですね。
84
+
85
+
86
+
87
+ #追記
88
+
89
+ 求めるパターン(3,6,4)がコード中に埋め込まれているのは、やな感じなので、引き数で渡すことにします。
90
+
91
+ ```Python
92
+
93
+ def checksub2(lst,x):
94
+
95
+ s = 0
96
+
97
+ for i, v in enumerate(lst):
98
+
99
+ s += v
100
+
101
+ if s == x:
102
+
103
+ return i+1
104
+
105
+ if s > x:
106
+
107
+ return False
108
+
109
+ return False
110
+
111
+
112
+
113
+ def checksub(lst, pattern):
114
+
115
+ i = 0
116
+
117
+ for n in pattern:
118
+
119
+ if not (j := checksub2(lst[i:],n)):
120
+
121
+ return False
122
+
123
+ i += j
124
+
125
+ return True
126
+
127
+
128
+
129
+ def check(lst, pattern):
130
+
131
+ for i in range(0,len(lst)):
132
+
133
+ if checksub(lst[i:],pattern):
134
+
135
+ return i
136
+
137
+ return False
138
+
139
+
140
+
141
+ print(check([2, 1, 1, 2, 1, 3, 2, 1, 3, 2, 1, 4, 1, 4, 1, 2, 1, 3, 1, 4, 1, 3, 1, 2, 1, 6, 2, 1, 2, 1, 2, 1, 2, 1,],
142
+
143
+ [3,6,4]))
144
+
145
+ ```
146
+
147
+ 分かりやすさ優先で書いてますので、速度を求めるならスライスを渡さず、「リスト全体と開始添え字」を渡すといいです。