경고 : 이것은 “이봐, 아스키 아트로 케이크를 그려 보자”도전이 아닙니다! 계속 읽으십시오;)
얼마 전 내 생일이었고 지금 33 살입니다.
그래서이 어색한 사회적 전통은 가족과 친구들을 초대하고 케이크에 숫자 같은 양초를 넣고 노래를 부르고 선물을 열어주는 것으로 구성되어 있습니다.
33
--------
숫자 대신 이진법을 사용하여 표준 양초를 넣을 수 있습니다. 나는 그 중 6 개를 케이크 위에 놓고 두 개를 밝게 비 춥니 다.
100001
--------
나는 내 나이의 십진수와 이진수가 회 문식 임을 알 수 있습니다 !
도전
나는 다른 숫자가 촛불로 케이크에 놓여지고 회문, 십진 및 이진인지 알고 싶습니다.
숫자가 십진법과 이진법 모두 에서 회 문형인지 테스트 할 프로그램 / 함수를 작성하십시오 . 그러나 잠깐, 더 많은 것이 있습니다 : 이진수로 앞에 0이 테스트에 포함됩니다!
입력
진수 번호 X가 생일 인 경우에 나는 테스트 할 것을 상동와 0 <X <2 32 -1 (예, 라이브 매우 긴 내 차원에서 명)
산출
Falsey는 다음 두 가지 조건을 모두 충족한다면 진실 입니다.
- 숫자의 십진수 표현은 표준 회문
- 숫자의 이진 표현은 표준 회문이며 앞에 0을 추가하면 도움이 될 수 있습니다.
테스트 사례
1 > 1 => Truthy
6 > 110 (0110) => Truthy
9 > 1001 => Truthy
10 > 1010 (01010) => Falsey, 10 is not palindromic
12 => 1100 (001100) => Falsey, 12 is not palindromic
13 => 1101 (...01101) => Falsey, neither 13 nor 1101 are palindromic
14 => 1110 (01110) => Falsey, 14 is not palindromic
33 > 100001 => Truthy
44 > 101100 (..0101100) => Falsey, 101100 is not palindromic
1342177280 > 1010000000000000000000000000000 (00000000000000000000000000001010000000000000000000000000000) => Falsey, 1342177280 is not palindromic (but the binary representation is)
297515792 > 10001101110111011101100010000 (000010001101110111011101100010000) => Truthy
규칙
- 표준 허점은 허용되지 않습니다
- 내장 라이브러리 변환 및 테스트가 허용됩니다
- 이것은 가장 짧은 코드 승리 인 code-golf입니다 !
행운을 빈다.
답변
05AB1E , 7 바이트
b0Ü‚DíQ
설명
b # convert input to binary
0Ü # remove trailing zeroes
‚ # pair with input
D # duplicate
í # reverse each (in the copy)
Q # check for equality
답변
파이썬 3 , 59 바이트
lambda a:all(c==c[::-1]for c in[str(a),bin(a).strip('0b')])
Rod 덕분에
-3 바이트 Connor Johnston 덕분에 -3 바이트
답변
자바 스크립트 (ES6), 65 바이트
반환 0
또는 1
.
n=>(g=b=>[...s=n.toString(b)].reverse().join``==s)()&g(2,n/=n&-n)
방법?
헬퍼 함수 g () 는 정수 b 를 입력으로 취하여 n 이 b 의 회문 인지 여부를 테스트합니다 . 경우 B가 지정되지 않은, 그냥 변환 N 을 테스트하기 전에 문자열로.
우리의 이진 표현에 후행 제로 제거 n은 최하위 분리에 의해 1 로 n&-n
하고 나눔 N 결과 양에 의해.
재미있는 사실 : equals 0
이기 때문에 진실입니다 . 이것은 회문입니다. (그러나 어쨌든 유효한 입력은 아닙니다.)(0/0).toString(2)
"NaN"
0
테스트 사례
let f =
n=>(g=b=>[...s=n.toString(b)].reverse().join``==s)()&g(2,n/=n&-n)
console.log(f(1 )) // Truthy
console.log(f(6 )) // Truthy
console.log(f(9 )) // Truthy
console.log(f(10)) // Falsey
console.log(f(12)) // Falsey
console.log(f(13)) // Falsey
console.log(f(14)) // Falsey
console.log(f(33)) // Truthy
console.log(f(44)) // Falsey
답변
매스 매 티카, 52 49 바이트
i=IntegerReverse;i@#==#&&!i[#,2,Range@#]~FreeQ~#&
용법
f = (i=IntegerReverse;i@#==#&&!i[#,2,Range@#]~FreeQ~#&);
f[6]
True
f /@ {9, 14, 33, 44}
{True, False, True, False}
설명
i=IntegerReverse;i@#==#&&!i[#,2,Range@#]~FreeQ~#&
i=IntegerReverse (* Set i to the integer reversing function. *)
i@#==# (* Check whether the input reversed is equal to input. *)
&& (* Logical AND *)
i[#,2,Range@#] (* Generate the binary-reversed versions of input, whose lengths *)
(* (in binary) are `{1..<input>}` *)
(* trim or pad 0s to match length *)
~FreeQ~# (* Check whether the result is free of the original input *)
! (* Logical NOT *)
내장 버전 PalindromeQ
PalindromeQ@#&&!IntegerReverse[#,2,Range@#]~FreeQ~#&
답변
답변
apt , 14 바이트
s ꬩ¢w n2 ¤ê¬
설명
s ê¬ © ¢ w n2 ¤ ê¬
Us êq &&Us2 w n2 s2 êq Ungolfed
Implicit: U = input integer
Us êq Convert U to a string and check if it's a palindrome.
Us2 w Convert U to binary and reverse.
n2 s2 Convert to a number, then back to binary, to remove extra 0s.
êq Check if this is a palindrome.
&& Return whether both of these conditions were met.