(Ini mungkin cukup klasik tetapi ini adalah posting pertama saya di sini, jadi saya belum siap untuk barang-barang mewah)
The Goodstein urutan didefinisikan untuk jumlah masukan sebagai berikut:
Pilih angka awal n , misalkan b = 2 dan ulangi:
- write n dalam basis heriditary b notasi
- gantikan semua ( b ) s dengan ( b +1) s dalam n dan kurangi 1
- output evaluasi desimal baru n
- kenaikan b
Notasi Basis Herediter adalah dekomposisi angka di mana basisnya adalah angka yang lebih besar untuk muncul. Contoh:
83dalam HB3:3^(3+1)+2226dalam HB2:2^(2^(2+1))+2^(2+1)+2
Urutan Goodstein selalu berakhir pada 0 , tetapi mereka cenderung pertama kali mendapatkan cukup besar cukup cepat sehingga tidak diminta untuk menampilkan urutan lengkap.
Tugas:
Diberi nomor input dalam format apa pun yang masuk akal, tugas Anda adalah menampilkan urutan Goodstein untuk nomor ini setidaknya hingga mencapai 10 ^ 25 atau 0
Contoh:
Input: 3
Output: 3, 3, 3, 2, 1, 0
Input: 13
Output: 13, 108, 1279, 16092, 280711, 5765998, 134219479, 3486786855, 100000003325, 3138428381103, 106993205384715, 3937376385706415, 155568095557821073, 6568408355712901455, 295147905179352838943, 14063084452067725006646, 708235345355337676376131, 37589973457545958193377292
Input: 38
Output: 38, 22876792454990
Detail:
- Nomor input dapat berupa array, string, integer, selama basis desimal
- Output mengikuti aturan yang sama
- Pemisahan istilah dalam output dapat berupa spasi, baris baru, atau pemisahan yang masuk akal
- Segera setelah urutan menjadi lebih besar dari 10 ^ 25, program Anda dapat keluar secara normal, melemparkan kesalahan / pengecualian, atau melanjutkan (tidak ada batasan)
- Ini adalah kode-golf , jadi jawaban tersingkat (dalam byte) menang
- Tentu saja, lubang standar dilarang
- Python ungolfed contoh kerja di sini
int(q/base.b), q%base.bperlu q//base.b, q%base.b(atau hanya divmod(q, base.b)) untuk menghindari kesalahan floating-point.