Diberikan bilangan bulat positif N
, menghasilkan bilangan bulat positif terkecil sehingga angka ini adalah palindrom (yaitu kebalikannya sendiri) dan dapat dibagi dengan N
.
Palindrome (yaitu keluaran) tidak perlu nol awalan untuk menjadi palindrom, mis. 080
Bukan jawaban yang valid untuk 16
.
Masukan tidak akan berupa kelipatan 10, karena alasan sebelumnya.
Program Anda mungkin memakan waktu sebanyak yang diperlukan, bahkan jika dalam praktiknya akan terlalu lama untuk menghasilkan jawabannya.
Masukan dan keluaran
- Anda dapat mengambil input melalui
STDIN
, sebagai argumen fungsi, atau yang serupa. - Anda dapat mencetak hasilnya
STDOUT
, mengembalikannya dari fungsi, atau yang serupa. - Input dan output harus dalam basis desimal.
Uji kasus
N Output
1 1
2 2
16 272
17 272
42 252
111 111
302 87278
1234 28382
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
N
Jawaban:
2sable / 05AB1E , 6/7 byte
2sable
Penjelasan
Cobalah online
05AB1E
Perbedaannya dengan kode 2sable adalah bahwa input hanya tersirat sekali di 05AB1E, jadi di sini kita perlu
¹
mendapatkan input pertama lagi.Cobalah online
Disimpan 1 byte dengan 2sable seperti yang disarankan oleh Adnan
sumber
[DÂQ#+
.Haskell,
453734 bytesumber
Pyth, 7 byte
Cobalah online: Demonstrasi
Penjelasan
sumber
Java,
16415912610894 byteVersi golf:
Versi tidak disatukan:
Shoutout to Emigna dan Kevin Cruijssen untuk berkontribusi perbaikan dan memotong byte hampir menjadi dua :)
sumber
x % a == 0
agak berlebihan ketika Anda menginisialisasi x sebagai a dan hanya meningkatkannya dengan a? Juga, dapatkah perbandingan dengan pembalikan string dilakukan dalam kondisi sementara?import org.apache.commons.lang.StringUtils;
dan menggunakanorg.apache.commons.lang.StringUtils.reverse
secara langsung.for(;;)
lebih pendek dariwhile(1>0)
. Tidak perlu untuk program lengkap, hanyaint c(int a){...}
akan dilakukan sebagai jawaban yang valid, karena pertanyaannya memiliki aturan berikut: " Anda dapat mengambil input sebagai argumen fungsi. Anda dapat mengembalikan output dari suatu fungsi. " @Emigna memang benar bahwa pemeriksaan modulo tidak diperlukan.x += a
). Saya tidak perlu memeriksa keterpisahan :) dan terima kasih atas tip golfnya!C #,
10380 BytesTidak disatukan
sumber
x.ToString()
dengan 'x + "" `akan menghemat banyak karakter.Python 2, 46 byte
Ide itu!
Solusi rekursif dengan
c
sebagai penghitung.Kasus untuk
0
ini menarik, karena walaupunc=0
memenuhi kondisi palindrome, itu tidak akan dikembalikan, karenaccc and 0 or xxx
selalu kembalixxx
.sumber
c*(`c`[::-1]==`c`)or
.PHP, 39 byte
;
setelah beberapa saat tidak melakukan apa-apastrrev
mengembalikan string ke belakangPanjang yang sama dengan for-loop
sumber
Brachylog , 8 byte
Cobalah online! (sekitar 5 detik untuk
1234
)Verifikasi semua testcases. (sekitar 20 detik)
sumber
Javascript (ES6),
5551 byte4 byte berkat Neil.
sumber
+
tampaknya tidak perlu.(x,c=x)
Anda bisa menghindari&&c
?c^[...c+""].reverse().join``?f(x,x+c):c
untuk menghemat satu byte lagi.c-
akan bekerja untuk angka yang sedikit lebih tinggi daripadac^
, jika perlu.Pyke,
119 byteCoba di sini!
sumber
C,
217189 byteVersi mandiri:
Panggil ke versi fungsi:
Tidak Terkumpul:
Panggilan ke suatu fungsi yang tidak ditandai:
Saya menyertakan versi mandiri untuk historisitas.
Ini codegolf pertama saya, ada komentar apa pun!
sumber
main()
terlepas dari preferensi Anda. Anda tidak akan bermain bisbol dengan menjalankan dua belas putaran terlebih dahulu sebelum menandai "karena saya lebih suka," Anda tidak akan pernah mencapai dengan aman. Ini adalah kompetisi, dan aturan utamanya adalah menggunakan segala cara yang diperlukan dan legal untuk mengurangi jumlah byte.int f(int a)
->f(a)
2) jika Anda harus mendeklarasikan beberapaint
s Anda dapat menggunakan parameter fungsi:int f(int a){int b;
->f(a,b){
3)sprintf
tidak akan pernah mengembalikan 0 sehingga Anda dapat menggunakanwhile
:while(1){sprintf(c,"%d",b);
->while(sprintf(c,"%d",b)){
4 ) gunakan K&R C untuk mendefinisikan Function sehingga tou dapat mengkombinasikan dengan petunjuk kedua saya:int s(char*a){int b=strlen(a);for(int i=0
->s(a,b,i)char*a;{b=strlen(a);for(i=0;
R,
117113109101 byteTidak disatukan
all(charToRaw(a)==rev(charToRaw(a)))
memeriksa apakah pada setiap posisia
nilaia
dan kebalikannya sama (yaitu, jikaa
palindromik).Dimungkinkan untuk bermain golf beberapa byte dengan bermain - main dengan
types
.sumber
Sebenarnya ,
1514 byteDiminta dijawab oleh Leaky Nun. Saran bermain golf diterima. Cobalah online!
Tidak melakukanolf
sumber
Haskell,
64 6356 bytePanggil dengan
(1!)16
atau hanya1!16
. Cobalah di Ideone.sumber
VBSCRIPT, 47 byte
ungolfed
sumber
Perl, 25 byte
Termasuk +2 untuk
-ap
Jalankan dengan input pada STDIN:
palidiv.pl
:sumber
SILOS , 109 byte
Cobalah online!
sumber
Japt , 14 byte
Cobalah online!
Terima kasih ETHproduk atas bantuannya! :)
sumber
MATL , 10 byte
Cobalah online!
sumber
PowerShell v2 +, 72 byte
Lama karena bagaimana pembalikan ditangani di PowerShell - tidak terlalu baik. ;-)
Mengambil input
$args[0]
, menyimpan ke dalam$i
(variabel loop kami) dan$n
(input kami). Loop tak terhingga, incrementing$i
oleh$n
setiap kali (untuk jaminan keterbagian).Setiap iterasi, kami memeriksa apakah
$i
palindrom. Ada beberapa tipu daya yang terjadi di sini, jadi izinkan saya menjelaskannya. Pertama-tama kita ambil$i
dan tegaskan"$i"
. Itu kemudian array-diindeks dalam urutan terbalik["$i".length..0]
sebelum-join
diedit kembali menjadi string. Itu dimasukkan ke sisi kanan-eq
operator uality, yang secara implisit melemparkan kembali string ke dalam[int]
, karena itulah operan kiri. Catatan: casting ini menghilangkan nol di depan dari palindrome, tetapi karena kami dijamin inputnya tidak dapat dibagi10
, tidak apa-apa.Kemudian,
if
itu adalah palindrome, kita cukup menempatkan$i
ke dalam pipa danexit
. Output tersirat pada akhir eksekusi.Uji Kasus
sumber
MATLAB, 76 byte
Format panggilan adalah
p(302)
hasil adalah string.Tidak ada yang pintar di sini. Itu melakukan pencarian linier, menggunakan
num2str()
danfliplr()
fungsi.Pengaturan jelek ini adalah sentuhan yang lebih pendek daripada menggunakan
while(1) ... if ... break end
pola.Tidak disatukan
sumber
Mathematica, 49 byte
Mulai penelusuran di
c = N
, dan tambahc
jika bukan palindrom dan tidak dapat dibagi olehN
. Ketika kondisi terpenuhi, outputc
.sumber
Jelly, 12 byte
Cobalah online!
Penjelasan:
Tautan ini membutuhkan 1 argumen. The
µ
s membaginya menjadi 4 bagian. Mulai dari yang terakhir dan bergerak ke kiri:sumber
Elixir , 75 byte
sumber
Python 2,
6665 bytei
adalah input danx
output (akhirnya)Setelah menggulir melalui jawaban lain saya menemukan jawaban Python 2 yang lebih pendek tapi saya berusaha untuk solusi saya jadi mungkin juga melemparkannya ke sini. ¯ \ _ (ツ) _ / ¯
sumber
[::-1] else
.return x if x%i==0&&
x==
x[::-1]else f(i,x+1)
, yang berarti Anda dapat membuatnya lambda, dan golf lebih banyak byte?REXX, 46 byte
sumber
Python 2 , 44 byte
Cobalah online!
Saya tahu bahwa pertanyaan itu diposting lebih dari enam bulan yang lalu, tetapi ini lebih pendek daripada pengajuan Python lainnya.
sumber
QBIC , 29 byte
Penjelasan:
sumber
Perl 6 , 35 byte
Penjelasan:
sumber
Perl 6, 39 byte
(33 tidak termasuk
my &f=
)sumber