アルゴリズム力を高めたくて以下の本で勉強していたところ, 累積和について学びました.
累積和は今まで使ったことがなかったので, 練習もかねてPythonで九九の表を作ってみました.
ソースコード
九九の表を累積和を用いて作成する
# 実行部分
if __name__ == '__main__':
X = [i for i in range(1, 10)]
Z = [[ 0 ]*(10) for i in range(10)]
# 縦方向の累積和を計算
for j in range(1, 10):
for i in range(1, 10):
Z[i][j] = Z[i-1][j] + X[j-1]
# 九九の表の出力
for i in range(1, 10):
output = Z[i][1:10]
for j in range(len(output)):
if j < 9:
print(f'{output[j]:>4}', end="")
else:
print(f'{output[j]:>4}')
print()
Xは1から10までのリストで, Zは累積和を計算したものを格納する行列にしています. その後, 縦方向の累積和を計算してZの値を変えていくことで九九を計算しています.
最後の出力部分は少し綺麗に見せるために桁を揃えたりしていますが, 単に出力するだけだったら
for i in range(1, 10):
output = Z[i][1:10]
print(*output)
でできます.
出力
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81