Kode terpendek untuk lulus semua kemungkinan menang.
Dalam matematika, kegigihan angka mengukur berapa kali operasi tertentu harus diterapkan pada digitnya sampai beberapa kondisi tetap tertentu tercapai. Anda dapat menentukan ketekunan aditif dari bilangan bulat positif dengan menambahkan digit bilangan bulat dan mengulangi. Anda akan terus menambahkan digit jumlah hingga satu digit angka ditemukan. Jumlah pengulangan yang diperlukan untuk mencapai angka satu digit itu adalah ketekunan aditif dari angka itu.
Contoh menggunakan 84523:
84523
8 + 4 + 5 + 2 + 3 = 22
2 + 2 = 4
It took two repetitions to find the single digit number.
So the additive persistence of 84523 is 2.
Anda akan diberi urutan bilangan bulat positif yang harus Anda hitung dari persistensi aditif. Setiap baris akan berisi bilangan bulat yang berbeda untuk diproses. Input dapat dalam metode I / O standar apa pun .
Untuk setiap bilangan bulat, Anda harus menampilkan bilangan bulat, diikuti oleh satu spasi, diikuti dengan ketekunan aditif. Setiap bilangan bulat yang diproses harus pada jalurnya sendiri.
Uji Kasus
Input output
99999999999 3
10 1
8 0
19999999999999999999999 4
6234 2
74621 2
39 2
2677889 3
0 0
sumber
Jawaban:
K - 29 Chars
Input adalah nama file yang diteruskan sebagai argumen, 29 karakter tidak termasuk nama file.
sumber
-1+#
=>#1_
Python 84 Chars
sumber
06234
.. hasilkan tantangan yang berhasil :-)Haskell, 100 karakter
sumber
read.pure
alih-alih(-48+).fromEnum
, coba online!Python (93 byte)
sumber
9
dan err ...and
input()
bukannyaint(raw_input())
....06234
.Sekam ,
1015 byte+5 byte untuk persyaratan I / O yang mengerikan
Cobalah online!
Penjelasan
Untuk mendukung banyak input, kita perlu menggunakan
m(₁r)¶
(di mana₁
fungsi melakukan perhitungan yang menarik):Fungsi
₁
melakukan hal berikut:sumber
bash, 105 karakter
Hampir tidak ada golf yang terlibat, tetapi saya tidak bisa memperbaikinya.
sumber
Haskell - 114
sumber
pure
lebih dari(:[])
dan mendefinisikan operator alih-alihs
, coba online!Ruby, 85 Karakter
Saya harus meminjam ide "jumlah * 48" dari Alex, karena terlalu rapi untuk dilewatkan (setidaknya di Ruby).
sumber
Golfscript, 40 karakter
sumber
J - 45 Chars
Baca dari stdin
sumber
^:a:
diri saya sendiri tetapi saya tidak dapat menemukan dokumentasi yang tepat ... ada petunjuk?a:
melalui^:a:
trik di Kartu Referensi J [PDF]^:a:
yang saya tahu: D^:(<'')
pada awalnya (mungkin untuk Kaprekar), sampai saya melihatnya di kartu, dan belajar tentanga:
kesempatan itu.c - 519
(atau 137 jika Anda menghargai saya untuk kerangka kerja ...)
Daripada menyelesaikan operasi yang satu ini saja, saya memutuskan untuk menghasilkan kerangka kerja untuk menyelesaikan semua masalah kegigihan .
Hanya dua baris mulai dari
char*b
yang unik untuk masalah ini.Ini memperlakukan input sebagai string, yang berarti bahwa memimpin "0" tidak strip sebelum tahap output.
Di atas memiliki komentar, pengecekan dan pelaporan kesalahan, dan pembacaan file (input harus berasal dari input standar) dihapus dari:
Sedikit lagi bisa diselamatkan jika kita mau membocorkan memori seperti saringan. Demikian juga dengan
#define
pengembalian dan sejenisnya, tetapi pada titik ini saya tidak peduli untuk membuatnya lebih buruk.sumber
J, 74 karakter
Suntingan
[:
to Ats@
0".
untuk".
menyederhanakan hal-halMisalnya
sumber
Saya pikir ini tentang yang terbaik yang bisa saya dapatkan.
Ruby 101 Chars
sumber
PARI / GP 101 Chars
Sayangnya, tidak ada fungsi input untuk GP, jadi saya kira ini tidak memiliki bagian IO. :(Tetap: Terima kasih Eelvex! :)sumber
input()
:)Javascript - 95
EDIT: Whoops tidak melakukan multi-baris
sumber
J, 78
Solusi rekursif. Baca dari stdin. Menulis ke stdout , jadi kurangi sedikit - butuh 18 karakter tambahan.
sumber
Perl - 77 karakter
sumber
JavaScript ,
5747 byte-10 byte terima kasih kepada @ l4m2!
Cobalah online!
sumber
f=(s,c=0)=>s>9?f([...s+""].reduce((x,y)=>x*1+y*1),++c):c
f=(s,c=0)=>s>9?f([...s+""].reduce((x,y)=>x- -y),++c):c
f=(s,c=0)=>s>9?f(eval([...s+""].join`+`)),++c):c
s>9
daneval
ide-ide bagus. Saya pikir Anda memiliki paren tambahan di sana, sehingga total 10 byte Anda menyelamatkan saya :-)05AB1E , 13 byte
Input sebagai daftar bilangan bulat.
Cobalah online.
Penjelasan:
sumber
MathGolf , 11 byte
Cobalah online!
Sangat tidak efisien, tapi kami tidak peduli soal itu. Pada dasarnya, menggunakan fakta bahwa persistensi aditif dari suatu bilangan lebih kecil dari atau sama dengan bilangan itu sendiri.Menggunakan fakta bahwa ketekunan aditif kurang dari atau sama dengan jumlah digit angka. Lewati semua test case dengan mudah sekarang.
Format input, sementara suboptimal untuk beberapa bahasa, sebenarnya adalah metode standar untuk mengambil beberapa test case sebagai input dalam MathGolf. Setiap baris input diproses sebagai eksekusi programnya sendiri, dan output dipisahkan oleh satu baris baru untuk setiap eksekusi.
Penjelasan (menggunakan
n = 6234
)sumber
K (ngn / k) , 16 byte
Larutan:
Cobalah online!
Penjelasan:
sumber
Stax ,
811 byteJalankan dan debug itu
+3 byte berkat @Khuldraeseth (jawaban pertama tidak memiliki keluaran yang sesuai)
sumber
i
menggantikanu
. Mengikuti spesifikasi IO yang kejam, ini menjadi 11 byte .scala 173:
sumber
Perl 5 , 65 byte
Cobalah online!
sumber
Java (OpenJDK 8) , 79 byte
Cobalah online!
Mungkin ada potensi untuk bermain golf lebih jauh, tapi saya akan melihat itu di masa depan, tetapi untuk sekarang, saya cukup senang dengan hasil kecil ini.
sumber
Python 3 , 82 byte
sumber
Tcl , 95 byte
Cobalah online!
sumber
Japt , 28 byte
Cobalah online!
sumber
PHP, 72 +1 byte
+1 untuk
-R
bendera.Jalankan sebagai pipa dengan
-R
.$i
harus diinisialisasi.(Juga, itu tidak akan mencetak apa pun selain
0
untuk digit tunggal tanpa inisialisasi.)sumber
Bash + coreutils, 83 byte
Cobalah online!
Harus disimpan ke skrip yang dipanggil
a
dan ditempatkan di sistemPATH
, karena itu menyebut dirinya secara rekursif. Mengambil input dari baris perintah, sepertia 1999
. Kembali dengan kode keluar.TIO memiliki beberapa batasan pada apa yang dapat Anda lakukan dengan skrip, jadi ada beberapa kode boilerplate untuk menjalankan ini di header.
Mencetak kesalahan ke
stderr
untuk input yang lebih besar daripada yang bisa ditangani bash integer, tetapi karena perhitungan sebenarnya dilakukan dengan string, tetap saja memberikan hasil yang benar.sumber