Логическая путаница для предоставления условия if

Я хочу дать условие таким образом, чтобы, если все значения были 0 или 1, выполнялась некоторая логика.

У меня есть три переменные.

   0 0 0 -> evaluates to True
1 1 1 -> evaluates to True

Все остальные комбинации оцениваются как ложные. Как я могу написать логику для этого?

-1

Решение

bool condition1, condition2, condition3;
...
if ((condition1 == condition2) && (condition2 == condition3))

или же

bool allThreeEqual = (condition1 == condition2) && (condition2 == condition3);
7

Другие решения

Начните с выражения того, что вы думаете словами, в виде простого кода:

int a, b, c;

// ...

bool eval = false; // assume false, prove otherwise

if( (a==0) && (b==0) && (c==0) )
eval = true;
else if( (a==1) && (b==1) && (c==1) )
eval = true;

Некоторые утверждают, что вышесказанное не элегантно. Я не согласен. Вышесказанное является простым, понятным и простым для понимания, поддержки и расширения. Похоже, определение элегантного для меня.

После того, как эта простая логика была написана, вы можете оценить, нужно ли проводить тестирование производительности для этого кода. Если вы это сделаете и определите, что это действительно узкое место, вы можете оптимизировать его, возможно, используя транзитивные отношения между элементами. Однако почти каждый раз это будет достаточно быстро, и не нужно будет вообще что-либо менять.

0