(Bu oldukça klasik olabilir ama bu benim ilk yazım, bu yüzden henüz süslü şeyler için hazır değilim)
Goodstein'e dizisi aşağıdaki şekilde bir giriş numarası için tanımlandığı gibidir:
Bir başlangıç numarası almak n , izin b = 2 ve tekrar:
- Yazma N heriditary üs b gösterimde
- n ve alt özet tüm ( b ) s yerine ( b +1) s yerine
- n'nin yeni ondalık değerlendirmesini çıkarır
- b artışı
Kalıtsal Taban notasyonu, temelin görünecek daha büyük sayı olduğu bir sayının ayrıştırılmasıdır. Örnekler:
83
HB3'te:3^(3+1)+2
226
HB2'de:2^(2^(2+1))+2^(2+1)+2
Goodstein dizileri her zaman 0 ile sonuçlanır , ancak önce oldukça hızlı bir şekilde büyük olma eğilimindedirler, bu nedenle tüm dizinin çıktısını alması istenmez.
Görev:
Herhangi bir makul biçimde bir girdi numarası verildiğinde, işiniz bu sayı için Goodstein dizisini en azından 10 ^ 25 veya 0'a ulaşana kadar çıkarmaktır.
Örnekler:
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
Detaylar:
- Girdi sayısı, ondalık temelde olduğu sürece bir dizi, bir dize, bir tam sayı olabilir
- Çıktı aynı kurala uyar
- Çıktıdaki terimlerin ayrılması boşluklar, yeni satırlar veya makul bir ayrım olabilir
- Sekans 10 ^ 25'ten büyük olur olmaz, programınız normal şekilde çıkabilir, bir hata / istisna atabilir veya devam edebilir (kısıtlama yok)
- Bu kod golf , bu yüzden en kısa cevap (bayt cinsinden) kazanır
- Tabii ki, standart boşluklar yasaktır
- Python ungolfed çalışma örneği burada
int(q/base.b), q%base.b
için q//base.b, q%base.b
(veya basitçe divmod(q, base.b)
) olması gerektiğidir.