Diberi nomor n
, tulis fungsi yang menemukan basis terkecil b ≥ 2
sedemikian rupa sehingga n
merupakan palindrom di dasarnya b
. Misalnya, input 28
harus mengembalikan basis 3
karena representasi terner 28 adalah 1001. Meskipun 93
merupakan palindrom di kedua basis 2 dan basis 5, output harus 2
sejak 2 <5.
Memasukkan
Bilangan bulat positif n < 2^31
.
Keluaran
Kembalikan basis terkecil b ≥ 2
sehingga b
representasi dasar n
adalah palindrom. Jangan menganggap angka nol di depan.
Sampel (input => keluaran):
11 => 10
32 => 7
59 => 4
111 => 6
Aturan
Kode terpendek menang.
code-golf
palindrome
base-conversion
ntomlin1996
sumber
sumber
n
bisa 1 dan 2 bukan palindrom basis 1. Namun, setiap positifn
adalahn + 1
palindrom dasar .Jawaban:
CJam , 19 byte / GolfScript, 23 byte
atau
Cobalah online:
Contohnya
Bagaimana itu bekerja
Untuk GolfScript,
q~
is~
,_
is.
,b
isbase
,W
is-1
dang
isdo
.sumber
GolfScript, 20 karakter
Pendekatan yang berbeda dengan GolfScript selain Dennis '. Ini menghindari loop eksplisit mahal yang mendukung operator find . Coba online .
sumber
x = 1
ataux = 2
. Keduanya adalah single-digit,x + 1
palindrom dasar , jadix))
harus memperbaikinya.Mathematica,
6766 byteTidak bisa benar-benar bersaing dengan GolfScript di sini dalam hal ukuran kode, tetapi hasil untuk 2 32 pada dasarnya dikembalikan secara instan.
sumber
PalindromeQ
untuk cek terbalik?)Japt ,
129 byteKecuali saya telah melewatkan trik (sudah terlambat!), Ini harus bekerja untuk semua nomor hingga dan termasuk setidaknya
2**53-1
.Dalam pengujian saya (yang diakui terbatas dan sepenuhnya acak), saya mendapatkan hasil hingga basis (!) Sejauh ini. Tidak terlalu kumuh jika Anda mempertimbangkan JavaScript hanya mendukung secara native basis untuk .
11601
310,515
2
36
Cobalah
Penjelasan
Input bilangan bulat implisit
U
.Dimulai dengan
2
, kembalikan angka pertama yang mengembalikan true ketika melewati fungsi berikut, denganX
menjadi angka saat iniKonversi
U
ke arrayX
angka dasar .Uji apakah array itu adalah palindrom.
sumber
N.ì(n)
bisa menangani pangkalan yang lebih besar dari36
. Terima kasih untuk itu.N.ì(n)
karena kami menggunakan bilangan bulat mentah ;-)Python 2 (83)
Saya tidak yakin apa format input / output pertanyaan yang diinginkan. Saya menulis sebuah fungsi. Kode menggunakan input opsional
b
untuk melacak basis saat ini sedang diuji. Thewhile
loop mengkonversi nomor tersebut ke daftar digit dalam basisb
.Baris terakhir mengembalikan
b
ifl
is a palindrome, dan secara rekursif mencoba berikutnyab
. Trik index-by-Boolean tidak berfungsi di sini karena akan menyebabkan kedua opsi dievaluasi terlepas dari Boolean, dan rekursi tidak akan pernah keluar dari posisi semula.sumber
JavaScript, 88 byte
Tidak Terkumpul:
sumber
Javascript, 105 byte
JSFiddle: http://jsfiddle.net/wR4Wf/1/
Perhatikan bahwa implementasi ini juga berfungsi dengan benar untuk basis besar. Misalnya,
f(10014)
mengembalikan 1668 (10014 adalah 66 di basis 1668).sumber
s/var b=2,c,d/b=d=2/
dapat memperoleh 6 byte lebih banyak;)Bash + coreutils, 100 byte
Menggunakan
dc
untuk melakukan pemformatan dasar. Yang sulit adalahdc
formatnya berbeda untuk n> 16.Testcases:
sumber
J - 28 char
Dijelaskan:
#.inv~
- Bentangkan argumen kiri ke pangkalan di argumen kanan.(-.@-:|.@)
- Kembalikan 0 jika ekspansi palindromik, dan 1 sebaliknya.(1+]^:)
- Tambahkan argumen yang benar satu per satu jika kami mengembalikan 1, jika tidak lakukan tindakan.^:_
- Ulangi kenaikan di atas sampai tidak ada tindakan.&2
- Siapkan argumen yang tepat sebagai 2, menjadikan ini fungsi dari satu argumen.Contoh:
sumber
2+1 i.~[#.inv"*(-:|.@)~2+i.
selama 27 byte. (Tidak ingin mempostingnya secara terpisah. Saya hanya akan meninggalkannya di sini.)R,
12295 byteSolusi berusia tiga tahun pada 122 byte:
Dengan beberapa penjelasan:
sumber
Sekam ,
119 byteTerima kasih @Zgarb untuk -2!
Cobalah online!
Penjelasan
sumber
Catatan: Pyth lebih baru dari pertanyaan ini, jadi jawaban ini tidak memenuhi syarat untuk menang.
Pyth, 10 byte
Coba di sini.
sumber
Scala, 83 byte
sumber
05AB1E , 8 byte
Cobalah online!
sumber
Perl 5 , 84 + 1 (-p) = 85 byte
Cobalah online!
sumber
JavaScript 72 byte
sumber
Mathematica 42 byte
Variasi entri Martin Ender. Memanfaatkan
IntegerReverse
(tersedia dalam versi 10.3) yang dibagikanIntegerDigits
.sumber
Java 8, 103 byte
Penjelasan:
Coba di sini.
sumber