gray_code

ソースコード

from titan_pylib.algorithm.gray_code import gray_code

view on github

展開済みコード

 1# from titan_pylib.algorithm.gray_code import gray_code
 2from typing import Iterator
 3
 4
 5def gray_code(n) -> Iterator[int]:
 6    """長さ n の bit 列に対し、0,1,...,(1<<n) を列挙する。
 7    i 番目の返り値は、前と変化する位置を返す。
 8    """
 9    pre = 0
10    for i in range(1, 1 << n):
11        now = i ^ (i >> 1)
12        yield (pre ^ now).bit_length() - 1
13        pre = now

仕様

gray_code(n) Iterator[int][source]

長さ n の bit 列に対し、0,1,…,(1<<n) を列挙する。 i 番目の返り値は、前と変化する位置を返す。