Peringatan: ini BUKAN tantangan "hei, mari kita menggambar kue di ASCII-art"! Silakan terus membaca;)
Beberapa waktu yang lalu itu adalah hari ulang tahunku, sekarang aku berumur 33 tahun.
Jadi ada tradisi sosial canggung yang terdiri dari mengundang keluarga dan teman-teman, meletakkan lilin seperti angka pada kue, menyanyikan lagu dan hadiah terbuka.
33
--------
Alih-alih angka, saya bisa menggunakan sistem biner untuk meletakkan lilin standar: Saya menempatkan 6 di atas kue dan menyalakan dua di antaranya.
100001
--------
Saya dapat melihat bahwa angka desimal dan biner pada usia saya adalah palindromik!
Tantangan
Saya ingin tahu apakah ada nomor lain yang bisa diletakkan di atas kue dengan lilin dan menjadi palindromik, desimal dan biner.
Menulis sebuah program / fungsi untuk menguji apakah nomor palindromic di kedua desimal dan biner. Tapi tunggu, masih ada lagi: dalam biner, nilainya nol untuk ujian!
Memasukkan
Angka desimal x yang ingin saya uji apakah itu palindromik ulang tahun dengan 0 <x <2 32 -1 (ya, orang-orang di dimensi saya hidup sangat lama)
Keluaran
Sejujurnya jika memenuhi dua syarat ini, Falsey yang lain:
- Representasi desimal angka adalah palindrom standar
- Representasi biner dari angka adalah palindrome standar, dan menambahkan nol di awal dapat membantu dengan ini
Uji kasus
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
Aturan
- Celah standar tidak diijinkan
- Konversi dan tes pustaka bawaan diizinkan
- Ini kode-golf , kode terpendek yang menang!
Semoga sukses, dan akhirnya selamat ulang tahun!
sumber
0b01010000000000000000000000000000
bukankah palindromik karena akan membutuhkan lebih banyak nol untuk ditambahkan dan dengan demikian melebihi 2 ^ 32-1? Dalam hal ini akan membantu untuk menambahkan sesuatu seperti1342177280
kasus uji falsey.1342177280
palindromic desimal tidak begitu Falsey. EditingJawaban:
05AB1E , 7 byte
Cobalah online! atau sebagai Test Suite
Penjelasan
sumber
Python 3 , 59 byte
Cobalah online!
-3 byte terima kasih kepada Rod
-3 byte terima kasih kepada Connor Johnston
sumber
JavaScript (ES6), 65 byte
Pengembalian
0
atau1
.Bagaimana?
Fungsi helper g () mengambil bilangan bulat b sebagai input dan menguji apakah n adalah palindrom pada basis b . Jika b tidak ditentukan, itu hanya mengkonversi n ke string sebelum mengujinya.
Kami menyingkirkan nol membuntuti dalam representasi biner dari n dengan mengisolasi paling signifikan 1 dengan
n&-n
dan membagi n dengan kuantitas yang dihasilkan.Fakta yang menyenangkan: itu adalah kebenaran
0
karena(0/0).toString(2)
sama"NaN"
, yang merupakan palindrom. (Tapi0
toh bukan input yang valid.)Uji kasus
Tampilkan cuplikan kode
sumber
Mathematica,
5249 byteCobalah di Wolfram Sandbox
Pemakaian
Penjelasan
Versi dengan builtin
PalindromeQ
sumber
Pyth - 13 byte
Test Suite .
sumber
_MI
danjQ2
menyimpan 2 byte:_MI,.sjQ2Z`
Japt , 14 byte
Uji secara online!
Penjelasan
sumber
sêQ *(¢w)sêQ
dansêQ &¢w n sêQ
297515792
(biner yang dibalik dikonversi menjadi desimal terlalu besar untuk ditangani JS) ...Proton , 57 byte
Cobalah online!
sumber
APL,
2731 BytesBagaimana cara kerjanya? Menggunakan 6 sebagai argumen ...
Cobalah di TryAPL.org
sumber
{(⌽¨≡⊢)⍕¨⍵,⊂(⌽↓⍨~⊥~)2⊥⍣¯1⊢⍵}
(ini adalah bentuk yang baik untuk menyediakan tautan untuk menjalankan seluruh rangkaian uji)Jelly , 8 byte
Cobalah online!
sumber
ȧ
ataua
bukannyaµ
karena kalau tidak, ini akan selalu benar.Brachylog , 7 byte
Cobalah online!
Itu banyak
↔
...Penjelasan
Dengan input dan output implisit, kodenya adalah:
?↔?ḃc↔.↔.
sumber
APL (Dyalog Classic) , 26 byte
Penjelasan
Cobalah online!
sumber
Perl, 53 +3 (-pal) byte
coba online
sumber
Pyt , 10 byte
Mengembalikan [1] jika benar, [0] jika salah
Cobalah online!
Penjelasan:
sumber
Retina , 72 byte
Cobalah online! Tautan termasuk kasus uji. Bekerja dengan membuat duplikat unary dari nomor asli, tetapi menggunakan
_
sehingga tidak bingung dengan misalnya input11
. Nomor unary kemudian dikonversi ke "biner" dan nol trailing dilucuti. Palindrom kemudian dipotong secara berturut-turut dan tahap terakhir menguji apakah masih ada yang tersisa.sumber
Mathematica, 70 byte
sumber
Sekam , 14 byte
Cobalah online!
Tidak Terikat / Penjelasan
sumber
Gaia , 10 byte
Cobalah online!
Penjelasan
Alih-alih memeriksa dengan nol nol di biner, saya memeriksa tanpa nol nol.
sumber
C (gcc) , 105 byte
Cobalah online!
sumber
return
dengann=
. ( 95 bytes. )C # (.NET Core) ,
130 129 179173 + 23 bytebeberapa hal, terima kasih kepada Ed Marty untuk menunjukkan bahwa saya perlu memeriksa sebanyak 0's empuk di depan untuk palindrome. Dan saya perlu memastikan bahwa saya dapat memeriksa hingga x ^ 32 -1.
Cobalah online!
sumber
return
dan(
untuk 129 byteusing System;
danusing System.Linq
Python 2 , 56 byte
Cobalah online!
Menggunakan
strip
metode Python untuk menghapusbin(..)
terkemuka output0b
dan nol angka biner (karena mereka akan selalu memiliki bit yang cocok).sumber
Pyth ,
2522191817 byte-
3678 byte dengan mempelajari bahasa lebih lanjutPenjelasan:
Saya yakin ini bisa diturunkan, saya akan mengusahakannya.
Test Suite
sumber
PHP, 69 +1 byte
Jalankan sebagai pipa dengan
-nR
Echoes input asli untuk truey / nothing for falsey
Cobalah online!
sumber
Oktaf ,
6866 byteCobalah online!
Penawaran awal dari Octave.
Kami pada dasarnya membuat array yang berisi angka sebagai string desimal dan angka sebagai string biner dengan trailing 0 dihapus. Kemudian kita membuat array dengan string yang sama tetapi dengan angka biner dan desimal dibalik. Akhirnya kedua array dibandingkan dan hasilnya benar jika cocok (keduanya palindrom) atau salah jika tidak (satu atau keduanya tidak palindrom).
flip
bukanfliplr
.sumber
APL2 (bukan Dyalog), 36 byte
Pertama, biarkan B menjadi representasi 32-bit N:
Kemudian mirror B dan temukan posisi 1 1:
Kemudian jatuhkan banyak posisi dari B. Ini akan mempertahankan jumlah 0s yang benar.
Kemudian lakukan FIND dan OR-REDUCTION untuk melihat apakah B yang dipangkas mengandung cerminnya sendiri.
Sekarang mari kita lihat N, desimal. Ekspresi kurung kurawal kiri mengkonversi N ke vektor karakter dan memeriksa apakah MATCH sendiri mirror.
Akhirnya, seorang DAN bergabung dengan dua cek.
Di APL2 saya tidak bisa membuat lambda yang rapi jadi saya menulis satu baris dan menyertakan panah penugasan. Semoga ini tidak curang.
sumber
⎕
) untuk menjadikannya program yang lengkap? Juga, apakah Anda bisa mempersingkat(N≡⌽N←⍕N)^∨/(B↓⍨1⍳⍨⌽B)⍷B←(32⍴2)⊤N←⎕
?Java 8,
105104 bytePenjelasan:
Coba di sini.
sumber