Biorąc pod uwagę liczbę, określ, czy jest to liczba składana.
Liczba składana to liczba taka, że jeśli weźmiesz ją jako reprezentację binarną i „złożysz” na pół, to jest wynik mnożenia przez XNOR pierwszej połowy liczby i drugiej połowy z cyframi w odwrotnej kolejności, otrzymasz zero.
Jeśli liczba ma nieparzystą liczbę cyfr binarnych, jej środkowa cyfra musi wynosić 1 i jest ignorowana podczas składania.
Ponieważ może to być nieco mylące, podam kilka przykładów:
178
Binarna reprezentacja 178 to
10110010
Aby to złożyć, najpierw podzielimy na pół
1011 0010
Cofamy drugą połowę
1011
0100
I XNOR dwie połówki:
0000
Jest to zero, więc jest to liczba składana.
1644
Binarna reprezentacja 1644 to
11001101100
Aby to złożyć, najpierw podzielimy na pół
11001 1 01100
Środkowy bit to 1, więc go wyrzucamy.
11001 01100
Cofamy drugą połowę
11001
00110
I XNOR dwie połówki:
00000
Jest to zero, więc jest to liczba składana.
4254
Binarna reprezentacja 4254 to
1000010011110
Aby to złożyć, najpierw podzielimy na pół
100001 0 011110
Środkowy bit to 0, więc nie jest to liczba składana.
Zadanie
Twoim zadaniem jest przyjęcie liczby dodatniej i zwrócenie prawdy, jeśli liczba się składa, i fałsz, jeśli tak nie jest. To jest kod golfowy, więc staraj się odliczać bajty.
Przypadki testowe
Oto pierwsze 99 liczb składanych:
[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
, więc nie. (Być może warto mieć trzeci działający przykład jak ten.) To samo dotyczy 18.