Étant donné un numéro, déterminez s'il s'agit d'un numéro pliant.
Un numéro de pliage est un nombre tel que si vous prenez une représentation binaire et que vous le "pliez" en deux, c'est-à-dire que vous prenez le résultat de la multiplication XNOR de la première moitié du nombre et de la seconde moitié avec les chiffres en sens inverse, vous obtiendrez zéro.
Si le nombre a un nombre impair de chiffres en binaire, le chiffre du milieu doit être 1 et est ignoré lors du pliage.
Comme cela peut paraître un peu déroutant, je vais donner quelques exemples:
178
La représentation binaire de 178 est
10110010
Pour plier cela nous l'avons d'abord divisé en deux
1011 0010
Nous inversons la seconde moitié
1011
0100
Et nous XNOR les deux moitiés:
0000
C'est zéro donc c'est un nombre pliant.
1644
La représentation binaire de 1644 est
11001101100
Pour plier cela nous l'avons d'abord divisé en deux
11001 1 01100
Le bit du milieu est 1 alors nous le jetons.
11001 01100
Nous inversons la seconde moitié
11001
00110
Et nous XNOR les deux moitiés:
00000
C'est zéro donc c'est un nombre pliant.
4254
La représentation binaire de 4254 est
1000010011110
Pour plier cela nous l'avons d'abord divisé en deux
100001 0 011110
Le bit du milieu est 0, donc ce n'est pas un numéro de pliage.
Tâche
Votre tâche consiste à accepter un nombre positif et à renvoyer une vérité si le nombre est plié et faux si ce n’est pas le cas. C’est du code golf, alors essayez de garder le décompte des octets.
Cas de test
Voici les 99 premiers numéros pliants:
[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
, alors non. (Cela pourrait valoir la peine d'avoir un troisième exemple travaillé comme celui-ci.) Même chose pour 18.