주어진 숫자는 그것이 접는 숫자인지 결정합니다.
접는 숫자는 이진 표현을 가져 와서 반으로 "접는"경우, 숫자의 첫 번째 절반과 두 번째 절반의 숫자를 거꾸로 XNOR 곱한 결과를 얻습니다. 제로.
이진수에 홀수의 자릿수가있는 경우 중간 자릿수는 1이어야하고 접을 때 무시됩니다.
약간 혼란 스러울 수 있으므로 몇 가지 예를 들겠습니다.
178
178의 이진 표현은
10110010
이것을 접으려면 먼저 반으로 나눕니다
1011 0010
후반전 반전
1011
0100
그리고 우리는 두 반쪽을 XNOR :
0000
이것은 0이므로 접는 숫자입니다.
1644
1644의 이진 표현은
11001101100
이것을 접으려면 먼저 반으로 나눕니다
11001 1 01100
중간 비트는 1이므로 버리십시오.
11001 01100
후반전 반전
11001
00110
그리고 우리는 두 반쪽을 XNOR :
00000
이것은 0이므로 접는 숫자입니다.
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