이진 트위스트와 회문 번호 춥니 다. 100001 ——– 나는 내

경고 : 이것은 “이봐, 아스키 아트로 케이크를 그려 보자”도전이 아닙니다! 계속 읽으십시오;)

얼마 전 내 생일이었고 지금 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

규칙

행운을 빈다.



답변

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 를 입력으로 취하여 nb 의 회문 인지 여부를 테스트합니다 . 경우 B가 지정되지 않은, 그냥 변환 N 을 테스트하기 전에 문자열로.

우리의 이진 표현에 후행 제로 제거 n은 최하위 분리에 의해 1n&-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~#&

Wolfram Sandbox에서 사용해보십시오

용법

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~#&

답변

Pyth-13 바이트

&_I.s.BQ`Z_I`

테스트 스위트 .


답변

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.

답변

양성자 , 57 바이트

a=>(b=c=>c==c[to by-1])(str(a))*b(bin(a)[2to].strip('0'))

온라인으로 사용해보십시오!