メモ帳

楽しいアウトプットの場所

Nim言語で bit全探索

集合\{1, 2, 3, 4\}の部分集合を全て列挙するプログラム

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]