i,j,k
4 つの整数変数との対称性を見つけたいですl
。対称性は次のとおりです。
- 4 つの数字はすべて等しい: XXXX、
- 3 つの数値が等しい: XXXY、XXYX、XYXX、YXXX
- 等しい数の 2 つのペア: XXYY、XYXY、XYYX、...
- 1 組の等しい数と 2 つの異なる数: XXYZ、XYZZ、XYZX、...
- すべての数値が異なります。
すべての変数は、特定の非連続範囲内で実行されます。ネストされた if else ステートメントを使用します。最初の if は、すべての変数の不等式をチェックします。そうでない場合は、ケース 1 があります。次の if は、等しいペアがあるかどうかを確認します。そうでない場合は、ケース 5 です。次の if は、3 つの等しい数をチェックします。true の場合、ケース 2 になります。それ以外の場合、最後の if は 2 つの等しい数のペアをチェックします。true の場合はケース 3、それ以外の場合はケース 4。
if(!(i==j && j==k && k==l)){
if(i==j || i==k || i==l || j==k || j==l || k==l){
if((i==j && j==k) || (i==j && j==l) || (i==k && k==l) || (j==k && k==l)){ ...//do something
}else{
if((i==j && k==l) || (i==k && j==l) || (i==l && j==k)){
...//do something
}else{
...//do something
}
}
}else{
...//do something
}
}else{
...//do something
}
これを行うより良い方法はありますか?このテストを何百万回も実行する必要があるため、パフォーマンスが向上するという意味で優れているという意味です。