|
簡単に解説しますと・・・
文字列"ABCD"の存在フラグを2進数の数値として算出させてます。
今回は、算出が楽なように[ABCD]を[DCBA]と反転させています。
つまり
[DCBA] [1111] 15
[D A] [1001] 9
こんな感じで表せますので、組み合わせPatternを2進数で表すと
[ ][0000] 0 [DCBA][1111] 15 ・・・なし
[ A][0001] 1 [DCB ][1110] 14
[ B ][0010] 2 [DC A][1101] 13
[ BA][0011] 3 [DC ][1100] 12
[ C ][0100] 4 [D BA][1011] 11
[ C A][0101] 5 [D B ][1010] 10
[ CB ][0110] 6 [D A][1001] 9
[ CBA][0111] 7 [D ][1000] 8
7 Patternになります。
これは、すべてのbitが真のとき「1111」= 15から、
1を引いて2で割ったもののようですので
(ここら辺、証明をしていないのでちと怪しい・・・)
それをLoopさせて求めています。
とりあえず 3,4,5個の組み合わせまでは正常のようです。
|
|