В настоящее время у меня есть массив возможностей , и я хочу вычислить фактов (логический 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.числоДругой пример:
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: Использован неверный термин «логика»
Как упоминалось в ответе ниже, правильная логика была на самом деле И скорее НЕ XNOR (где все столбцыравны).И, фактически, выдает 0, где все столбцы равны 0, когда я (как отмечено выше) действительно искал результат 1 (или true), если бы все значения были равны.