Game Bilangan Tambah
Tulis fungsi / program yang mengambil 2 parameter integer, parameter integer atau variabel integer , angka awal, dan jumlah iterasi maks. Kode tersebut harus melakukan contoh permainan berikut untuk membuat nomor baru, dan ulangi sampai nomor tersebut satu digit tersisa. misalnya.
3 7 2 = (3 + 7) & (7 + 2) = 10 9
1 0 9 = (1 + 0) & (0 + 9) = 1 9
1 9 = (1 + 9) = 10
1 0 = (1 + 0) = 1
Pada dasarnya, ambil setiap digit individu dan tambahkan ke tetangganya, lalu tambahkan hasil penambahan berikutnya juga.
Hitungan iterasi max adalah untuk menjaga loop tak terbatas, dan ketika max mengenai, kode harus membuang 5 langkah nomor terakhir. Output yang sama harus terjadi ketika menyelesaikan dengan mencapai satu digit. Jika kurang dari 5 langkah terjadi, hanya output angka yang valid.
Output akan muncul seperti ( Step: Number) termasuk 5 langkah terakhir dari langkah-langkah yang selesai atau diakhiri:
func(3541, 50) akan menghasilkan format output yang tepat ini:
6: 1411
7: 552
8: 107
9: 17
10: 8
func(3541, 5) akan menghasilkan:
1: 895
2: 1714
3: 885
4: 1613
5: 774
Seluruh perhitungan menjadi:
1: 895
2: 1714
3: 885
4: 1613
5: 774
6: 1411
7: 552
8: 107
9: 17
10: 8
Jika ada kurang dari 5 langkah, cukup cetak langkah-langkah yang diambil.
Hanya gunakan lib bawaan, parameter bisa dari mana saja (apa pun yang paling mudah untuk bahasa pilihan Anda). Tidak ada batasan ukuran integer maksimum, dan jika ada luapan, biarkan crash.
Mengingat ini tidak terlalu sulit dari sudut pandang teka-teki, saya akan memberikan sampai hari Minggu tanggal 25, 20:00 (UTC + 8) untuk pengiriman yang dipertimbangkan untuk jawaban yang diterima, di mana titik terpendek dari bahasa apa pun akan menjadi pemenang.
EDIT:
Selamat kepada Howard, menang dengan jawaban 48 GolfScript .
Disebutkan secara khusus untuk marinus tempat kedua dengan jawaban 66 APL .
Favorit pribadi saya (menjadi bias terhadap JavaScript) adalah jawaban core1024 .
func(3541, 5)seharusnya mencetak 5 langkah atau 10?