Verilen bir sayı olup olmadığını bir sayı verilir.
Bir katlama numarası, ikili gösterimi alırsanız ve ikiye katlarsanız, bu rakamın ilk yarısının XNOR çarpımı ve ikinci yarısını da tersi sayılarla alır. sıfır.
Sayının ikilide tek sayı hanesi varsa, orta hane 1 olmalıdır ve katlanırken dikkate alınmaz.
Bu biraz kafa karıştırıcı olabileceğinden, bazı örnekler vereceğim:
178
178'in ikili gösterimi
10110010
Bunu katlamak için önce ikiye bölüyoruz
1011 0010
İkinci yarıyı tersine çeviririz
1011
0100
Ve biz iki yarıyı XNOR:
0000
Bu sıfırdır, bu bir katlama numarasıdır.
1644
1644'ün ikili gösterimi
11001101100
Bunu katlamak için önce ikiye bölüyoruz
11001 1 01100
Ortadaki bit 1, bu yüzden atıyoruz.
11001 01100
İkinci yarıyı tersine çeviririz
11001
00110
Ve biz iki yarıyı XNOR:
00000
Bu sıfırdır, bu bir katlama numarasıdır.
4254
4254'ün ikili gösterimi
1000010011110
Bunu katlamak için önce ikiye bölüyoruz
100001 0 011110
Orta bit 0, bu yüzden bu bir katlama numarası değildir.
Görev
Göreviniz, pozitif bir sayı almak ve eğer sayı katlanmıyorsa bir aldatmaca döndürmek ve eğer değilse katlanmamaksa bir aldatmaca döndürmektir. Bu kod golf, bayt'ı geri saymaya çalışın.
Test Kılıfları
İşte ilk 99 katlama sayıları:
[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
, yani hayır. (Yine de bunun gibi üçüncü bir işe yarayan bir örneğe sahip olmak faydalı olabilir.) Aynısı 18 için de geçerli.