language-agnostic - 检查十个 bool 值中至少有两个为真

标签 language-agnostic logic boolean-logic boolean-operations

如果三个 bool 值中至少有两个为真,这是最简单的找出方法:

BOOL a, b, c;
-(BOOL)checkAtLeastTwo
{
  return a && (b || c) || (b && c); 
}

如果有十个 bool 值并且其中至少两个需要为真,最佳解决方案是什么?提前致谢。

最佳答案

您的原始实现是次优的 - 您可以只对真实值求和:

return (int)a + (int)b + (int)c >= 2;

显然您可以将其扩展到 10 个变量:

return (int)a + (int)b + (int)c + (int)d + (int)e +
       (int)f + (int)g + (int)h + (int)i + (int)j >= 2;

关于language-agnostic - 检查十个 bool 值中至少有两个为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272139/

相关文章:

java - 有没有办法在 Java 中禁用短路评估?

boolean-logic - 当且仅当某个输入为 true 时才返回 true

swift - 将 "or"逻辑与多个 "if case"语句一起使用

language-agnostic - 项目前文档

python - 加速 "closest"字符串匹配算法

java - 基本游戏逻辑/AI设计

java - 可以使用 catch block 来继续代码而不是处理异常吗?

c++ - 使角色在屏幕中移动时,window.clear() 如何在 SFML 中工作?

math - float 学运算是否被破坏?

string - 快捷键分配算法