- 要素数10の配列
- 各要素は 0 or 1
- 全部で 210 = 1024 通り
この組み合わせを列挙して,各要素が0か1か知るには,
# 1 << 10 は 1024 (左シフト) (1 << 10).times do |b| x = [] 10.times do |i| # 任意の桁数右シフトして 1 と AND をとる x << ((b >> i) & 1) end p "#{sprintf("%010b", b)}: #{x}" end # "0000000000: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]" # "0000000001: [1, 0, 0, 0, 0, 0, 0, 0, 0, 0]" # "0000000010: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]" # "0000000011: [1, 1, 0, 0, 0, 0, 0, 0, 0, 0]" # "0000000100: [0, 0, 1, 0, 0, 0, 0, 0, 0, 0]" # ...