我正在处理在线考试申请,在检查登录问题时显示有4
或6
选项。让我们使用 4
选项 a b c d
,如果用户选择 a
那么值为 1
如果 b
它们的值 2
如果 c
那么值 4
如果 d
那么值 8
如果 e
值为 16
如果 f
则值为 32
:
a -> 1
b -> 2
c -> 4
d -> 8
e -> 16
f -> 32
用户可以选择多个选项,假设用户选择a
和b
那么答案是1 + 2 == 3
三是正确答案,或者用户选择 a d
然后 1 + 8 == 9
是正确答案。
将 9
分解为 1、8
或将 11
分解为 1 的逻辑是什么, 2, 8
或 35
到 1, 2, 32
?
最佳答案
按位运算似乎也行。
由于您使用 Angular 标记,我将使用 Javascript 解决方案:
function breakdown(input) {
var values = [1, 2, 4, 8, 16, 32];
var checked = [];
for (v of values) {
if (!!(input & v)) checked.push(v);
}
return checked;
}
测试用例:
breakdown(9)
> [1, 8]
breakdown(11)
> [1, 2, 8]
breakdown(35)
> [1, 2, 32]
关于c# - 数字组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56785961/