Nim言語で bit全探索
集合の部分集合を全て列挙するプログラム
import sequtils let n = 4 for bit in 0..<(1 shl n): var vec = newSeq[int]() for i in 0..<n: if(bit and (1 shl i)) != 0: vec.add(i+1) echo bit, " : ", vec
実行結果は以下の通り
0 : @[] 1 : @[1] 2 : @[2] 3 : @[1, 2] 4 : @[3] 5 : @[1, 3] 6 : @[2, 3] 7 : @[1, 2, 3] 8 : @[4] 9 : @[1, 4] 10 : @[2, 4] 11 : @[1, 2, 4] 12 : @[3, 4] 13 : @[1, 3, 4] 14 : @[2, 3, 4] 15 : @[1, 2, 3, 4]