技術メモ

役に立てる技術的な何か、時々自分用の覚書。幅広く色々なことに興味があります。

2進数を使って(表裏/オンオフ)数え上げ

N枚のコインを同時に投げる場合やN人のYES/NOの数え上げなどがしたい時は、
2**N通りのパータンを2進数に変換してしてからパターンを作ると良い。
具体的には、
0~2**N-1までの数字を10進数⇒2進数表記に文字列として変換したのち、文字列をリストと考えて処理する。
ただし、桁数分ゼロ埋めする必要がある。

for i in range(2**n):
    pattern1 = list(map(int, bin(i)[2:].zfill(n)))
    pattern2 = list(map(int, format(i, '0'+str(n)+'b')))