▲ | skullt a day ago | |
There's a bit of a trick in that solution: n is assumed to have the lower two bits clear so for an arbitrary n the array would really be: [(n & ~3), 1, (n & ~3) + 3, 0][n % 4] where the (n & ~3) makes sure those lower 2 bits are cleared. But note that we only ever can look at the first element when n % 4 == 0. In that case, (n & ~3) == n already. And further, we only ever can look at the third element when n % 4 == 2. In that case (n & ~3) == n - 2, so (n & ~3) + 3 == n + 1. Hence the array can be simplified to the one given in the other comment. |