我想創建一個包含三個變量的所有可能組合的數組,它們可以是真或假(即8種可能的組合)。生成所有可能的真/假組合
我想在這個圖像
建立在左上角的立方體所以輸出應該是這樣的
points = [
// first square
{
id: '000',
truths: [false, false, false]
position: [0, 0]
},
{
id: '100',
truths: [true, false, false]
position: [5, 0]
},
{
id: '010',
truths: [false, true, false]
position: [0, 5]
},
{
id: '110',
truths: [true, true, false]
position: [5, 5]
},
// second square
{
id: '001',
truths: [false, false, true]
position: [2.5, 2.5]
},
{
id: '101',
truths: [true, false, true]
position: [7.5, 2.5]
},
{
id: '011',
truths: [false, true, true]
position: [2.5, 7.5]
},
{
id: '111',
truths: [true, true, true]
position: [7.5, 7.5]
},
];
lines = [
{ from: '000', to: '100' },
{ from: '000', to: '010' },
{ from: '000', to: '001' },
{ from: '100', to: '101' },
{ from: '100', to: '110' },
{ from: '001', to: '101' },
{ from: '001', to: '011' },
{ from: '101', to: '001' },
{ from: '101', to: '111' },
...
]
我不知道怎麼走通過所有可能的真值來創造這些點。
一種方法可以是使用一個for循環
for (var i=0; i<Math.pow(2, 3); i++) {
...
}
,但它並不能幫助我分配可能的真值。
有2^n個可能的值。如果你不想使用嵌套for循環(你真的不應該),然後提取整數'0 ... 2^n'的位。 「真理」中的「n」值將是整數的位。 – plasmacel
我只是不明白,如果您的訂單是0,4,2,3,1,5,7,8如何二進制的方法將幫助你。你爲什麼不使用數字。 – Redu
@Redu我不明白你在說什麼。訂單無關緊要。從0到8的所有整數將表示3位,這對應於OP的類比中的「真值」數組。 2^n個整數= 2^n個「真值」數組。在二進制中,數字可以被認爲是「數組」:0 = [0,0,0],1 = [0,0,1],2 = [0,1,0],3 = [0,1 ,1],4 = [1,0,0],5 = [1,0,1],6 = [1,1,0],7 = [1,1,1]。 – plasmacel