約1時間30分間気付かなかったミス

数を長さNで循環シフトさせて、その後の偶奇を知りたかった。

if((x - shift + N) % N % 2 == 0) ...

としなければいけないところを

if((x - shift) % 2 == 0) ...

とかしていた。
当たり前だが、((x mod m) mod n = x mod n)は一般には成り立たない。
例えば((9 mod 3) mod 2) = 0 だが、(9 mod 2) = 1。

今回の場合、1回考えて書き直したらこのバグは直っていたかもしれない。
書きなおすことも考えよう。