Tulis program singkat untuk 196-algoritma . Algoritme dimulai dari integer, lalu menambahkan kebalikannya hingga palindrome tercapai.
misalnya
input = 5280
5280 + 0825 = 6105
6105 + 5016 = 11121
11121 + 12111 = 23232
output = 23232
Memasukkan
bilangan bulat, yang bukan bilangan lyrchrel (artinya, akhirnya menghasilkan palindrome di bawah algoritma ini, daripada melanjutkan tanpa batas)
Keluaran
palindrom tercapai.
code-golf
palindrome
Eelvex
sumber
sumber
Jawaban:
APL (22 karakter)
Ini bekerja di Dyalog APL. Berikut penjelasannya, dari kanan ke kiri:
{ ... }⍞
: Dapatkan input dari pengguna sebagai karakter (⍞
) dan masukkan ke fungsi kami ({ ... }
).⋄
memisahkan pernyataan, jadi kami melihatnya dari kiri ke kanan):a≡⌽a←⍕(⍎⍵)+⍎⌽⍵ : a
: Evaluate (⍎
) argumen kanan (⍵
) membalikkan (⌽
), dan menambahkannya ke versi yang dievaluasi dari argumen kanan itu sendiri. Kemudian, format hasilnya (⍕
; yaitu, berikan representasi karakternya), tetapkan (←
) ke variabela
, dan akhirnya uji apakaha
kebalikannya setara dengana
(yaitu, apakaha
palindrom?). Jika benar, kembalilaha
; jika tidak...∇a
: Umpana
balik ke fungsi kami (∇
referensi diri implisit).Contoh:
sumber
{⍵=A←⍎⌽⍕⍵:⍵⋄∇A+⍵}⎕
. Anda menyimpan kawat gigi, mundur dan eval.GolfScript, 29 karakter
Komentar yang dipilih
Daging program adalah
do
loop, tentu saja. Jadi saya akan membahasnya..`
menyalin nomor itu dan menggantinya..-1%
menyalin versi string itu dan membalikkannya..@
menyalin versi terbalik, dan membawa versi non-terbalik asli ke depan.Jadi, katakanlah, jumlah ini 5280. Pada tahap ini, stack adalah:
5280 "0825" "0825" "5280"
. Panggung diatur untuk perbandingan. (Setelah perbandingan, tumpukan akan dibiarkan5280 "0825"
tidak peduli apa yang --- barang-barang untuk dibandingkan telah muncul.);
) dan kembalikan 0 (untuk mengakhirido
loop).~
) string terbalik (untuk membuatnya menjadi angka), tambahkan (+
) ke nomor asli, dan kembalikan 1 (untuk melanjutkando
loop).sumber
Python 2, 55 byte
Berikut saran JPvdMerwe:
Python 2, 62:
sumber
n
sebagai int Anda dapat mempersingkat 6 karakter, periksa kode: meta.codegolf.stackexchange.com/q/75/62Ruby - 56 karakter
sumber
Hanya melatih keterampilan Pyth saya, bukan lawan yang serius.
Pyth, 16 byte
Setara dengan Python 3:
sumber
J 25
2731sumber
CJam,
2221 byteCJam dibuat setelah pertanyaan ini diajukan, jadi secara teknis itu adalah pengiriman yang tidak valid. Tapi saya menemukan pertanyaan yang menarik, jadi begini:
Penjelasan:
Logika intinya adalah bahwa dalam setiap iterasi sementara, Anda pertama-tama memeriksa apakah palindrom tercapai atau tidak. Jika tidak, tambahkan kebalikannya ke nomor tersebut. Cukup banyak apa algoritma itu!
Cobalah online di sini
sumber
Ini adalah lawan yang sebenarnya, karena J telah ada selama beberapa dekade.
J (16 byte)
Ini adalah kata kerja, sehingga dapat ditugaskan ke variabel dalam sesi J dan digunakan seperti:
Bagaimana itu bekerja:
sumber
Python: 66
sumber
Perl, 40 karakter
sumber
Scala 82
sumber
JAGL Alpha 1.2 - 19, 21 dengan stdin
Tidak bersaing , hanya mendapatkan beberapa pengalaman dengan bahasa saya
Mengharapkan nomor dari stdin
Penjelasan
sumber
05AB1E , 7 byte (tidak bersaing)
Non-bersaing , karena bahasa tersebut mengungguli tantangan.
Kode:
Penjelasan:
Menggunakan pengkodean CP-1252 . Cobalah online! .
sumber
hello
. Bifurkasi akan menjaga string asli, dan mendorong string terbalik. Ini kependekan dari duplikat dan mundur .Brachylog , 8 byte
Cobalah online!
Agak mirip dengan salah satu program Brachylog pertama yang saya lihat dan tertarik oleh, dari video pengantar Brachylog .
sumber
PHP -
5448 karakterUji:
sumber
$str =
hal kucing untuk bermain golf di masa depan. Heck of jauh lebih baik daripada menggunakanSTDIN
dan masih lebih baik dari$argv[0]
.Bash (64)
Panggil dengan: bash <filename> <number>
sumber
C # -
10399 karakterC # tidak pernah bermain golf dengan sangat baik. Elegan, tapi bertele-tele.
sumber
Dalam Q (39 karakter)
Penggunaan sampel:
Edit:
Sekarang menjadi 34, penggunaan yang sama:
sumber
sumber
Jelly , 9 byte (tidak bersaing)
Jawaban yang sangat sederhana, hanya untuk tantangan pengkodean dalam dan bahasa esoterik.
ṚḌ+µŒḂ¬$¿
Cobalah online!
Jika jawaban ini tidak jelas atau salah pada level apa pun, silakan tunjukkan.
Terima kasih kepada Dennis karena telah membantu saya dengan potongan kecil kode pertama ini.
sumber
Python. 85 karakter:
Jika Anda tidak ingin output pada setiap iterasi:
(satu karakter lebih sedikit)
sumber
Windows PowerShell (63)
Saya masih membencinya karena tidak ada cara mudah untuk membalik string.
sumber
long
juga yang merupakan tipe integral terbesar yang didukung PowerShell, tapi tetap saja, saya buang dua karakter.Haskell
8987 karakterVersi yang bisa dibaca:
Versi golf dibuat dengan menguraikan dan mengganti nama fungsi yang tersisa menjadi nama karakter tunggal.
sumber
until
dari Prelude, serta mengekstraksi pola penerapan operator biner kex
danr x
. Juga, gunakanreadLn
bukangetLine
danread
. Hasilnya menyimpan 20 karakter:f%x=f x$read.reverse.show$x;main=readLn>>=print.until((==)%)((+)%)
r=(=<<read.reverse.show)
dan gunakan sajar(==)`until`r(+)
. Selain dari tabungan itu, itu tidak perlu menjadi program lengkap, pengiriman yang valid bisa saja merupakan fungsi yang tidak disebutkan namanya dari sebelumnya. Ini membawa Anda ke 41 byte: Cobalah online!befunge, 57 byte
meskipun kode tersebut ditempatkan di kisi 4x19, jadi mungkin menyebutnya 76.
sumber
C ++ TMP (256 karakter)
Versi ini bisa dipersingkat sedikit, tetapi jawaban 256 karakter sulit dilewatkan. Ini versi yang tidak golf:
sumber
Pyke, 13 byte (tidak bersaing)
Coba di sini!
sumber
Tambahkan ++ , 57 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Powershell,
6362 byte-1 byte terima kasih kepada @AdmBorkBork
Skrip uji:
sumber
;
antaraparam($m)
danfor
.GNU dc, 46 byte
Membutuhkan GNU dc, min versi 1.4 (untuk
R
perintah).Input dan output adalah top-of-stack, seperti biasa. Dibutuhkan jumlah kode yang mengejutkan untuk membalikkan angka dalam dc (kecuali jika saya melewatkan sesuatu, yang jauh dari mustahil). Itu memang memiliki rentang numerik untuk berperilaku baik dengan input seperti ini (yang akan meluap aritmatika unsigned 32-bit, misalnya):
Penjelasan
sumber
R
perintah baru . Solusi yang bagus!R
itu baru. Menantikan melihat metode Anda!R ,
193109105 byte-84 bytes terima kasih kepada Giuseppe! -4 Byes terima kasih kepada JayCe!
Cobalah online!
sumber
strsplit(x,"")
lebih pendek daristrsplit(x,NULL)
, danel(L)
lebih pendek dariL[[1]]
.as.double
lebih pendek darias.numeric
danstrtoi
lebih pendek dari keduanya; alih-alih pengaturant
gunakan langsung dalamif
pernyataan Anda . juga ini adalah fungsi rekursif jika saya tidak salah, jadi Anda perlu menempatkanf=
sebagai bagian dari kiriman Anda.utf8ToInt
untuk mengkonversi ke digit danintToUtf8
untuk mengkonversi kembali. Itu akan menjadi penghematan byte besar!while
loop-
menggantikanU
. Saya juga digantirev
dengan!
tetapi tidak menyimpan byte ...