考虑以下多项选择题:
苹果的颜色是什么?
- 一个。红色
- 湾绿色
- ℃。蓝色
- d。黑
现在,我想计算所有可能的答案,我可以手动完成,就像这样......:
a
b
c
d
a, b
a, c
a, d
b, c
b, d
c, d
a, b, c
a, b, d
a, c, d
b, c, d
a, b, c, d
......但这很容易出现人为错误。我怎么能用JavaScript编程?
我最初的想法是定义选择的总数(a,b,c,d = 4)......:
const TOTAL_CHOICES = 4;
// TO-DO
......但后来我不知道下一步应该是什么。有什么想法吗?
答案 0 :(得分:0)
在@ nenad-vracar评论的帮助下,我找到了一个解决方案:
function combinations(str) {
var fn = function(active, rest, a) {
if (!active && !rest)
return;
if (!rest) {
a.push(active);
} else {
fn(active + rest[0], rest.slice(1), a);
fn(active, rest.slice(1), a);
}
return a;
}
return fn("", str, []);
}
var result = combinations('abcd').sort();
for (combination of result) {
document.body.innerHTML += combination + '<br>';
}
这将输出:
a
ab
abc
abcd
abd
ac
acd
ad
b
bc
bcd
bd
c
cd
d
答案 1 :(得分:0)
这实现了我在评论中建议的方式。
var choices = ['d','c','b','a'];
var numCombos=Math.pow(2,choices.length);
var binNum;
writeln('Combos are:');
for (i=0;i<numCombos;i++)
{
binNum=(i.toString(2));
while (binNum.length<choices.length)
binNum='0'+binNum;
for (j=choices.length-1;j>=0;j--){
if (binNum[j]=='1') write(choices[j]);}
writeln();
}