(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:
83
dalam HB3:3^(3+1)+2
226
dalam 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.b
perluq//base.b, q%base.b
(atau hanyadivmod(q, base.b)
) untuk menghindari kesalahan floating-point.Jawaban:
Pyth ,
2826 byteBaris baru tertinggal sangat penting.
Cobalah online! (Tautan ini termasuk tambahan yang
Q
tidak diperlukan oleh versi Pyth saat ini.)Bagaimana itu bekerja
Penting bahwa
y
didefinisikan ulang di setiap iterasi loop untuk mencegah memoisasi melintasi perubahan ke variabel globalJ
.sumber
Haskell , 77 byte
(&2)
adalah fungsi anonim mengambilInteger
dan mengembalikan daftar (berpotensi sangat panjang) dariInteger
s, gunakan sebagai(&2) 13
.Cobalah online! (terputus pada
10^25
.)Bagaimana itu bekerja
(&2)
memulai urutan dengan basis2
.n&b
menghitung urutan dimulai dengan angkan
dan pangkalanb
.n<0
, yang umumnya terjadi setelah langkahn==0
.n
pada daftar yang dikembalikan secara rekursif oleh ekspresi(0?n-1)&(b+1)
.?
adalah operator fungsi lokal.0?n
memberikan hasil konversin
ke basis turun temurunb
, kemudian meningkatkan basis di mana-mana.e
melacak eksponen saat ini.e?n
mengkonversi nomor tersebutn*b^e
.0
kapann==0
.n
dengan basisb
.(e+1)?div n b
menangani rekursi bagi hasil bagi dan eksponen lebih tinggi berikutnya.mod n b*(b+1)^0?e
menangani sisa (yang merupakan digit yang sesuai dengan eksponen saat inie
), kenaikan basis, dan mengubah eksponen saat ini secara turun temurun dengan0?e
.sumber