目前,我有一系列可能性,我希望根据该可能性列表计算事实(逻辑 XNOR)。
var possibilities = new[] {
new[] {0, 1, 1, 1, 1, 1, 1, 1},
new[] {1, 1, 1, 1, 1, 1, 1, 0}
}
我正在尝试将其转换为 XNOR 的布尔数组(所有值都相等)
预期结果:
[ 0, 1, 1, 1, 1, 1, 1, 0 ]
可能性的数量是 1 .. n。另一个例子是:
var possibilities = new[] {
new[] {1, 1, 0, 1, 1, 0, 0, 0},
new[] {1, 1, 0, 1, 1, 0, 0, 1},
new[] {0, 1, 1, 0, 1, 1, 0, 1}
}
结果将是:
[ 0, 1, 0, 0, 1, 0, 1, 0 ]
我最初的方法是开始构建嵌套循环并遍历每种可能性,获取索引并进行比较,但这似乎非常“骇人听闻”,我相信有一种更简单(更好)的方法可以通过 LINQ 处理它(但是我这样做了不太了解 LINQ 来编写它)或不需要丑陋的嵌套循环的算法。
编辑#1:使用了不正确的“逻辑”术语
正如下面的答案中提到的,正确的逻辑实际上不是 AND 而是 XNOR(所有列都相等)。实际上,当我(如上所述)时,AND 会在所有列都为 0 的情况下产生 0,如果所有值都相等,那么它实际上是在寻找 1(或真)的结果。