Fonksiyon tanımlama f (n), bir pozitif tamsayı , n , aşağıdaki gibi:
- n / 2 , n eşitse
- 3 * n + 1 , n tuhafsa
Tekrar tekrar herhangi Bu işlevi uygularsanız n 0'dan büyük (kimsenin henüz kanıtlamak mümkün olmuştur gerçi), sonuç her zaman 1'e yakınsama görünüyor. Bu özellik Collatz Conjecture olarak bilinir .
Bir tamsayı en tanımlayın durdurma zamanı size Collatz fonksiyonu aracılığıyla geçmek zorunda kaç kez olarak f o 1. İşte ilk 15 tamsayılar durdurma zamanlardır ulaşmadan önce:
1 0
2 1
3 7
4 2
5 5
6 8
7 16
8 3
9 19
10 6
11 14
12 9
13 9
14 17
15 17
Diyelim ki aynı durma süresi Collatz kuzenleri ile herhangi bir sayı kümesini çağıralım . Örneğin, 5 ve 32, 5 duraklama süresi olan Collatz kuzenleridir.
Göreviniz: negatif olmayan bir tamsayı alan ve durma süresi bu tamsayıya eşit olan Collatz kuzenleri setini üreten bir program veya işlev yazın.
Giriş
STDIN, ARGV veya fonksiyon argümanı ile verilen negatif olmayan bir tamsayı S.
Çıktı
Durdurma zamanı S tüm numaralar listesi, sıralanmış içinde yükselen düzeni. Liste programınız tarafından çıkarılabilir veya işleviniz tarafından döndürülebilir veya çıkarılabilir. Çıktı formatı esnektir: sayılar birbirinden kolayca ayırt edilebildiği sürece boşlukla ayrılmış, yeni satırla ayrılmış veya dilinizin herhangi bir standart liste biçimi iyidir.
Gereksinimler
Gönderiniz herhangi bir S ≤ 30 için doğru sonuçlar vermelidir. Saat veya gün değil, saniye veya dakika olarak bitmelidir.
Örnekler
0 -> 1
1 -> 2
5 -> 5, 32
9 -> 12, 13, 80, 84, 85, 512
15 -> 22, 23, 136, 138, 140, 141, 150, 151, 768, 832, 848, 852, 853, 904, 906, 908, 909, 5120, 5376, 5440, 5456, 5460, 5461, 32768
İşte S = 30 için çıktının bir özeti .
Bu kod-golf : bayt cinsinden en kısa program kazanır. İyi şanslar!