やりたいこと
例: 引数1に3
を渡すと3ビットで表せれるすべての組み合わせを出力する。
たまに使用するので、個人的なメモ(誰かの役に立つと嬉しい)
出力例
[
[ '0', '0', '0' ],
[ '0', '0', '1' ],
[ '0', '1', '0' ],
[ '0', '1', '1' ],
[ '1', '0', '0' ],
[ '1', '0', '1' ],
[ '1', '1', '0' ],
[ '1', '1', '1' ]
]
コード
const getAllBit = (len) => {
//すべての組み合わせの個数
const end = Math.pow(2, len) - 1
let result = []
for (let i = 0; i <= end; i++) {
//toStringの引数に2を渡すことで2進数表記にする
//len分だけ0うめ
const bit = i.toString(2).padStart(len, '0')
result.push(bit.split(''))
}
return result
}
console.log(getAllBit(5))
追記: コメント欄でご指摘があった、再利用しない関数をなくし一つの関数でまとめました。
実行例
引数に5を渡した場合(上記のコードと同じ)
[
[ '0', '0', '0', '0', '0' ],
[ '0', '0', '0', '0', '1' ],
[ '0', '0', '0', '1', '0' ],
[ '0', '0', '0', '1', '1' ],
[ '0', '0', '1', '0', '0' ],
[ '0', '0', '1', '0', '1' ],
[ '0', '0', '1', '1', '0' ],
[ '0', '0', '1', '1', '1' ],
[ '0', '1', '0', '0', '0' ],
[ '0', '1', '0', '0', '1' ],
[ '0', '1', '0', '1', '0' ],
[ '0', '1', '0', '1', '1' ],
[ '0', '1', '1', '0', '0' ],
[ '0', '1', '1', '0', '1' ],
[ '0', '1', '1', '1', '0' ],
[ '0', '1', '1', '1', '1' ],
[ '1', '0', '0', '0', '0' ],
[ '1', '0', '0', '0', '1' ],
[ '1', '0', '0', '1', '0' ],
[ '1', '0', '0', '1', '1' ],
[ '1', '0', '1', '0', '0' ],
[ '1', '0', '1', '0', '1' ],
[ '1', '0', '1', '1', '0' ],
[ '1', '0', '1', '1', '1' ],
[ '1', '1', '0', '0', '0' ],
[ '1', '1', '0', '0', '1' ],
[ '1', '1', '0', '1', '0' ],
[ '1', '1', '0', '1', '1' ],
[ '1', '1', '1', '0', '0' ],
[ '1', '1', '1', '0', '1' ],
[ '1', '1', '1', '1', '0' ],
[ '1', '1', '1', '1', '1' ]
]
5ビットで表すことができるすべての組み合わせが出力できてます。