Оптимизировать условие if - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу упростить это условие, когда a и b являются логическими значениями

!((a && b) || (!a && !b))

Я пытался использовать генератор таблиц правды, но не смог выяснить упрощенную версию.

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Вы можете упростить это в: a!=b,


Потому что по эквивалентности:

!((a && b) || (!a && !b)) // not(both true or both false)
!(a==b)                   // not(both equals)
a!=b                      // different

А вот таблица, которая подтверждает, что вы a отличается от b:

 a\b  | true  | false
true  | false | true
false | true  | false
0 голосов
/ 27 апреля 2018

Вы можете упростить до if (!(a==b)) или if (a!=b).

Ваше условие упрощается до того, что "если a и b оба имеют значение true (т. Е. Имеют одинаковое состояние) или оба имеют значение false, тогда условие разрешается до false". Или «если a отличается от состояния b, условие разрешается в true».

0 голосов
/ 27 апреля 2018

Это можно упростить как XOR (исключая или). Это эквивалентно (a && !b) || (!a && b).

В Java это может быть достигнуто как a ^ b

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...