Я хочу дать условие таким образом, чтобы, если все значения были 0 или 1, выполнялась некоторая логика.
У меня есть три переменные.
0 0 0 -> evaluates to True
1 1 1 -> evaluates to True
Все остальные комбинации оцениваются как ложные. Как я могу написать логику для этого?
bool condition1, condition2, condition3;
...
if ((condition1 == condition2) && (condition2 == condition3))
или же
bool allThreeEqual = (condition1 == condition2) && (condition2 == condition3);
Начните с выражения того, что вы думаете словами, в виде простого кода:
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;
Некоторые утверждают, что вышесказанное не элегантно. Я не согласен. Вышесказанное является простым, понятным и простым для понимания, поддержки и расширения. Похоже, определение элегантного для меня.
После того, как эта простая логика была написана, вы можете оценить, нужно ли проводить тестирование производительности для этого кода. Если вы это сделаете и определите, что это действительно узкое место, вы можете оптимизировать его, возможно, используя транзитивные отношения между элементами. Однако почти каждый раз это будет достаточно быстро, и не нужно будет вообще что-либо менять.