すべての値が 0 または 1 の場合に何らかのロジックが実行されるような条件を指定したいと考えています。
3 つの変数があります。
0 0 0 -> evaluates to True
1 1 1 -> evaluates to True
他のすべての組み合わせは False と評価されます。これのロジックを書くにはどうすればよいですか?
すべての値が 0 または 1 の場合に何らかのロジックが実行されるような条件を指定したいと考えています。
3 つの変数があります。
0 0 0 -> evaluates to True
1 1 1 -> evaluates to True
他のすべての組み合わせは False と評価されます。これのロジックを書くにはどうすればよいですか?
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;
上記はエレガントではないと主張する人もいます。同意しません。上記は単純で、簡単で、理解し、維持し、拡張するのが非常に簡単です。私にはエレガントの定義のように聞こえます。
この単純なロジックを記述したら、このコードでパフォーマンスのベンチマークを行う必要があるかどうかを評価できます。実行し、これが実際のボトルネックであると判断した場合は、おそらく要素間の推移的な関係を利用して、最適化を進めることができます。ただし、ほとんどの場合、これは十分に高速であり、変更を加える必要はまったくありません。