💭

【Python】パスカルのトライアングル(実装)

2023/05/13に公開

はじめに

パスカルのトライアングルをPythonで実装しました。

参考図(パスカルのトライアングル) Wikipediaより引用

スクリーンショット 2023-05-10 23.56.19.png

実装

pascal_triangle.py
from typing import List

# 値を足し合わせる部分のアルゴリズム(出力はリストに入ったままの状態)
def pascal_triangle(depth: int) -> List[List[int]]:
    # 各深さ毎のリストを作成する(深くなる毎に1が追加されていく)
    data = [[1] * (i + 1) for i in range(depth)]
    # 和を計算できるようになるのは、深さが2以降
    for line in range(2, depth):
        # 1つ上の層の値を足したものに置き換える。
        for i in range(1, line):
            data[line][i] = data[line-1][i-1] + data[line-1][i]
    return data

# トライアングル形式で表示させる関数
def print_pascal(data: List[int]) -> None:
    width = 6
    for index, line in enumerate(data):
        # リスト内の数字のみを取り出す
        numbers = "".join([str(i).center(width, " ") for i in line])
        # 深さに応じてインデントを変える
        print((" " * int(width/2)) * (len(data) - index), numbers)

# テスト
if __name__ == "__main__":
    # 改行して表示させる
    print_pascal(pascal_triangle(11))

参考

https://www.udemy.com/course/python-algo

Discussion