回答編集履歴

2

追記

2020/06/15 11:30

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -39,3 +39,169 @@
39
39
 
40
40
 
41
41
  実際に差し替えて試してみて下さい。
42
+
43
+
44
+
45
+ 組んでみた
46
+
47
+ ---
48
+
49
+ 組んでみました。
50
+
51
+ 雑ですけれど、グローバル変数を利用しないで実現できる例です。参考までに。
52
+
53
+ ```Python
54
+
55
+ # bは塁打。ホームランも4塁打として扱えば良い。
56
+
57
+ def hit(base_state, b):
58
+
59
+ # どの塁までランナーが到達したか。3塁のあとは4塁,5塁と突き進む。
60
+
61
+ new_state = [b]
62
+
63
+ for e in base_state:
64
+
65
+ new_state.append(e+b)
66
+
67
+
68
+
69
+ # print(new_state)
70
+
71
+
72
+
73
+ # 4塁を超えたランナーをホームインさせる。
74
+
75
+ ret = []
76
+
77
+ point = 0
78
+
79
+ for e in new_state:
80
+
81
+ if e < 4:
82
+
83
+ ret.append(e)
84
+
85
+ else:
86
+
87
+ point += 1
88
+
89
+
90
+
91
+ # ベース上の状況と、今の打席の点数を返す。
92
+
93
+ return ret, point
94
+
95
+
96
+
97
+
98
+
99
+ # 2塁打、単打、3塁打、単打、単打、本塁打、本塁打、2塁打
100
+
101
+ h = [2, 1, 3, 1, 1, 4, 4, 2]
102
+
103
+ # 最初はランナーなし。
104
+
105
+ state = []
106
+
107
+
108
+
109
+ for e in h:
110
+
111
+ print('-'*16)
112
+
113
+ if not state:
114
+
115
+ print('ランナーなし')
116
+
117
+ else:
118
+
119
+ print(f'ただいまランナー{state}塁')
120
+
121
+
122
+
123
+ print(f'{e}塁打!')
124
+
125
+ state, point = hit(state, e) # 塁上の状況の更新。
126
+
127
+ print(f'{point}点入りました')
128
+
129
+
130
+
131
+ print(f'残塁は{state}です。')
132
+
133
+ ```
134
+
135
+
136
+
137
+ **実行結果** [Wandbox](https://wandbox.org/permlink/z1lfv4nfvJSoDxSH)
138
+
139
+ ```
140
+
141
+ ----------------
142
+
143
+ ランナーなし
144
+
145
+ 2塁打!
146
+
147
+ 0点入りました
148
+
149
+ ----------------
150
+
151
+ ただいまランナー[2]塁
152
+
153
+ 1塁打!
154
+
155
+ 0点入りました
156
+
157
+ ----------------
158
+
159
+ ただいまランナー[1, 3]塁
160
+
161
+ 3塁打!
162
+
163
+ 2点入りました
164
+
165
+ ----------------
166
+
167
+ ただいまランナー[3]塁
168
+
169
+ 1塁打!
170
+
171
+ 1点入りました
172
+
173
+ ----------------
174
+
175
+ ただいまランナー[1]塁
176
+
177
+ 1塁打!
178
+
179
+ 0点入りました
180
+
181
+ ----------------
182
+
183
+ ただいまランナー[1, 2]塁
184
+
185
+ 4塁打!
186
+
187
+ 3点入りました
188
+
189
+ ----------------
190
+
191
+ ランナーなし
192
+
193
+ 4塁打!
194
+
195
+ 1点入りました
196
+
197
+ ----------------
198
+
199
+ ランナーなし
200
+
201
+ 2塁打!
202
+
203
+ 0点入りました
204
+
205
+ 残塁は[2]です。
206
+
207
+ ```

1

修正

2020/06/15 11:30

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  [1, 1, 1] を [1, 2, 3] にしたいならば、各要素の累積和を出さねばなりません。
18
18
 
19
- しかし上記のコードでは、**全ての要素にnumを足しているだけ**です。
19
+ しかし上記のコードでは、**要素にnumを足しているだけ**です。
20
20
 
21
21
 
22
22