与えられた数は、それが折りたたみ数であるかどうかを決定します。
折り畳み式の数値は、バイナリ表現を取り、それを半分に「折り畳む」場合に、数値の前半と後半の数字を逆にしたXNOR乗算の結果を取得する数値です。ゼロ。
数値の2進数の桁数が奇数の場合、その中間桁は1でなければならず、折り畳み時に無視されます。
それは少し混乱するかもしれないので、私はいくつかの例を挙げます:
178
178のバイナリ表現は
10110010
これを折り畳むには、まず半分に分割します
1011 0010
後半を逆にします
1011
0100
そして、2つの半分をXNORします。
0000
これはゼロなので、これは折りたたみ数です。
1644
1644のバイナリ表現は
11001101100
これを折り畳むには、まず半分に分割します
11001 1 01100
中央のビットは1なので、破棄します。
11001 01100
後半を逆にします
11001
00110
そして、2つの半分をXNORします。
00000
これはゼロなので、これは折りたたみ数です。
4254
4254のバイナリ表現は
1000010011110
これを折り畳むには、まず半分に分割します
100001 0 011110
中間ビットは0であるため、これはフォールディング数ではありません。
仕事
あなたの仕事は、正の数を取り、数が折り畳まれている場合は真実を返し、そうでない場合は偽りを返すことです。これはコードゴルフですので、バイト数を減らしてください。
テストケース
以下は、最初の99個の折りたたみ番号です。
[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
ですので、いいえ。(。それは、このようなサードしかし加工した例を持つ価値があるかもしれません)18に対して同じ行く