Dato un numero, determinare se si tratta di un numero pieghevole.
Un numero pieghevole è un numero tale che se lo prendi rappresentazione binaria e lo "pieghi" a metà, questo è il risultato della moltiplicazione XNOR della prima metà del numero e della seconda metà con le cifre al contrario, otterrai zero.
Se il numero ha un numero dispari di cifre in binario, la sua cifra centrale deve essere 1 e viene ignorata durante la piegatura.
Dal momento che potrebbe essere un po 'confuso, darò alcuni esempi:
178
La rappresentazione binaria di 178 è
10110010
Per piegarlo, lo abbiamo prima diviso a metà
1011 0010
Invertire la seconda metà
1011
0100
E noi XNOR le due metà:
0000
Questo è zero, quindi questo è un numero pieghevole.
1644
La rappresentazione binaria del 1644 è
11001101100
Per piegarlo, lo abbiamo prima diviso a metà
11001 1 01100
Il bit centrale è 1, quindi lo buttiamo fuori.
11001 01100
Invertire la seconda metà
11001
00110
E noi XNOR le due metà:
00000
Questo è zero, quindi questo è un numero pieghevole.
4254
La rappresentazione binaria di 4254 è
1000010011110
Per piegarlo, lo abbiamo prima diviso a metà
100001 0 011110
Il bit centrale è 0, quindi questo non è un numero pieghevole.
Compito
Il tuo compito è quello di prendere un numero positivo e restituire una verità se il numero è pieghevole e falsa se non lo è. Questo è il golf del codice, quindi cerca di mantenere il conto alla rovescia del byte.
Casi test
Ecco i primi 99 numeri pieghevoli:
[1, 2, 6, 10, 12, 22, 28, 38, 42, 52, 56, 78, 90, 108, 120, 142, 150, 170, 178, 204, 212, 232, 240, 286, 310, 346, 370, 412, 436, 472, 496, 542, 558, 598, 614, 666, 682, 722, 738, 796, 812, 852, 868, 920, 936, 976, 992, 1086, 1134, 1206, 1254, 1338, 1386, 1458, 1506, 1596, 1644, 1716, 1764, 1848, 1896, 1968, 2016, 2110, 2142, 2222, 2254, 2358, 2390, 2470, 2502, 2618, 2650, 2730, 2762, 2866, 2898, 2978, 3010, 3132, 3164, 3244, 3276, 3380, 3412, 3492, 3524, 3640, 3672, 3752, 3784, 3888, 3920, 4000, 4032, 4222, 4318, 4462, 4558]
0
, quindi no. (Potrebbe valere la pena avere un terzo esempio elaborato come questo.) Lo stesso vale per il 18.