Только 1 истина из 4 входов (логическое выражение логики) - PullRequest
0 голосов
/ 22 января 2019

Напишите выражение, в котором у вас есть 4 входа, и выведите «true» только тогда, когда один и только один вход «true».

До сих пор я думал об использовании ворот XOR ((x0 XOR x1) XOR (x2 XOR x3)), но мне нужно решить случай, в котором мы имеем 3 true, например x0 = false x1 = true x2 = true x3 = true, выведет True XOR False и, наконец, все выражение верно. Я хочу сделать выражение как можно более простым (т.е. использовать как можно меньше операторов). Ive также попытался добавить ((x0 XOR x1) Y (x2 XOR x3)) ∧ ¬ ((x0∧x1) ∨ (x2∧x3)) Я не уверен, что это лучший способ сделать это.

Я ожидаю, что результат (x0 = false x1 = true x2 = true x3 = true) будет False, но с моим первым выражением это будет true, и что-то вроде (x0 = false x1 = true x2 = false x3 = false), чтобы быть верным, что мое первое выражение правильно работает для

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Это выражение дает вам ожидаемый результат (вывод истина, когда один и только один вход истина).Пожалуйста, проверьте это ..

(! X0 И! X1 И (x2 XOR x3)) ИЛИ (! X2 И! X3 И (x0 XOR x1))

0 голосов
/ 22 января 2019

Посмотрите на эту демонстрацию в php (вы можете использовать ее на любом языке программирования).Предположим, у вас есть 4 логических переменных: X1, X2, X3 и X4.Вы должны проверить все (No of Boolean Exp)+1 комбинации выражений.здесь у вас 4, поэтому будет 5 комбинаций.Booleans, так что будет сочетание выражений.и последняя комбинация предназначена для проверки, по крайней мере, один должен быть верным.

$x1 = true;
$x2 = false;
$x3 = false;
$x4 = true;

if(($x1 && !$x2 && !$x3 && !$x4) || (!$x1 && $x2 && !$x3 && !$x4) || (!$x1 `&& !$x2 && $x3 && !$x4) || (!$x1 && !$x2 && !$x3 && $x4) && ($x1 && $x2 && $x3 && $x4)){
    echo 'only one variable is true';
}else{
    echo 'more then one var is true';
}`
...