teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2020/06/15 11:30

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -18,4 +18,87 @@
18
18
  print(dst) # => [1, 2, 3]
19
19
  ```
20
20
 
21
- 実際に差し替えて試してみて下さい。
21
+ 実際に差し替えて試してみて下さい。
22
+
23
+ 組んでみた
24
+ ---
25
+ 組んでみました。
26
+ 雑ですけれど、グローバル変数を利用しないで実現できる例です。参考までに。
27
+ ```Python
28
+ # bは塁打。ホームランも4塁打として扱えば良い。
29
+ def hit(base_state, b):
30
+ # どの塁までランナーが到達したか。3塁のあとは4塁,5塁と突き進む。
31
+ new_state = [b]
32
+ for e in base_state:
33
+ new_state.append(e+b)
34
+
35
+ # print(new_state)
36
+
37
+ # 4塁を超えたランナーをホームインさせる。
38
+ ret = []
39
+ point = 0
40
+ for e in new_state:
41
+ if e < 4:
42
+ ret.append(e)
43
+ else:
44
+ point += 1
45
+
46
+ # ベース上の状況と、今の打席の点数を返す。
47
+ return ret, point
48
+
49
+
50
+ # 2塁打、単打、3塁打、単打、単打、本塁打、本塁打、2塁打
51
+ h = [2, 1, 3, 1, 1, 4, 4, 2]
52
+ # 最初はランナーなし。
53
+ state = []
54
+
55
+ for e in h:
56
+ print('-'*16)
57
+ if not state:
58
+ print('ランナーなし')
59
+ else:
60
+ print(f'ただいまランナー{state}塁')
61
+
62
+ print(f'{e}塁打!')
63
+ state, point = hit(state, e) # 塁上の状況の更新。
64
+ print(f'{point}点入りました')
65
+
66
+ print(f'残塁は{state}です。')
67
+ ```
68
+
69
+ **実行結果** [Wandbox](https://wandbox.org/permlink/z1lfv4nfvJSoDxSH)
70
+ ```
71
+ ----------------
72
+ ランナーなし
73
+ 2塁打!
74
+ 0点入りました
75
+ ----------------
76
+ ただいまランナー[2]塁
77
+ 1塁打!
78
+ 0点入りました
79
+ ----------------
80
+ ただいまランナー[1, 3]塁
81
+ 3塁打!
82
+ 2点入りました
83
+ ----------------
84
+ ただいまランナー[3]塁
85
+ 1塁打!
86
+ 1点入りました
87
+ ----------------
88
+ ただいまランナー[1]塁
89
+ 1塁打!
90
+ 0点入りました
91
+ ----------------
92
+ ただいまランナー[1, 2]塁
93
+ 4塁打!
94
+ 3点入りました
95
+ ----------------
96
+ ランナーなし
97
+ 4塁打!
98
+ 1点入りました
99
+ ----------------
100
+ ランナーなし
101
+ 2塁打!
102
+ 0点入りました
103
+ 残塁は[2]です。
104
+ ```

1

修正

2020/06/15 11:30

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  > ```
8
8
 
9
9
  [1, 1, 1] を [1, 2, 3] にしたいならば、各要素の累積和を出さねばなりません。
10
- しかし上記のコードでは、**全ての要素にnumを足しているだけ**です。
10
+ しかし上記のコードでは、**要素にnumを足しているだけ**です。
11
11
 
12
12
  累積和は例えば[itertools.accumulate](https://docs.python.org/ja/3/library/itertools.html#itertools.accumulate)を用いて求めることができます。
13
13
  ```Python