c# - 数字组合

标签 c# angular algorithm

我正在处理在线考试申请,在检查登录问题时显示有46 选项。让我们使用 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

用户可以选择多个选项,假设用户选择ab 那么答案是1 + 2 == 3 三是正确答案,或者用户选择 a d 然后 1 + 8 == 9 是正确答案。

9 分解为 1、8 或将 11 分解为 1 的逻辑是什么, 2, 8351, 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/

相关文章:

angular - 如何从index.html在Angular 8应用程序中动态定义 "base href "?

Angular 2 animate *ngFor 列表项一个接一个地使用 RC 5 中的新动画支持

node.js - Azure NodeJS 版本

java - 为什么 Javas Collections 框架二进制搜索使用迭代器来搜索大列表中的元素

java - 在 Java 中获取加起来为 100 的 3 个数字的所有可能组合的算法

c# - 如何提高 .NET Core Web API 的性能?

c# - 中间有一个特殊字符的字母数字字符的正则表达式

c# - 从 XML 中的十六进制字符串获取 JPEG 图像

algorithm - 如何检查矩形和多边形的交集?

c# - 将客户端 javascript 值传递给服务器端 C#