3 つのブール値 A、B、C があります。これらの値のいずれかが True でない場合にのみ実行される IF ステートメントを記述する必要があります。つまり、真理値表は次のようになります。
A | B | C | Result
---+---+---+--------
0 | 0 | 0 | 1
0 | 0 | 1 | 1
0 | 1 | 0 | 1
0 | 1 | 1 | 0
1 | 0 | 0 | 1
1 | 0 | 1 | 0
1 | 1 | 0 | 0
1 | 1 | 1 | 0
これを書く最良の方法は何ですか?すべての可能性を列挙できることはわかっていますが、それは... 冗長すぎるようです。:P
追加:アイデアが 1 つだけありました:
!(A && B) && !(B && C) && !(A && C)
これにより、2 つの値が設定されていないことが確認されます。合計についての提案もOKです。さらに読みやすいかもしれません...
(A?1:0) + (B?1:0) + (C?1:0) <= 1
PS これは製品コード用なので、パフォーマンスよりもコードの読みやすさを重視しています。
追加 2:既に回答が受け入れられていますが、好奇心旺盛な人のために - それは C# です。:) ただし、質問はほとんど言語に依存しません。