Collatz varsayım Eğer herhangi bir olumlu tamsayı almak, o zaman aşağıdaki algoritma yeterli kez tekrar o varsayımları:
if number is odd, then multiply by three and add one
if number is even, then divide by two
sonunda 1'de sona ereceksin. Her zaman işe yarıyor gibi gözüküyor, ama asla her zaman işe yaradığı ispatlanmadı.
Zaten 1'e ne kadar zaman alacağını hesaplamak için golf oynadın , bu yüzden işleri biraz değiştiririm diye düşündüm.
Belirli bir pozitif tamsayı ile başlayarak, 1'e ("durma süresi") ne kadar süre alacağını hesaplayın. O zaman bu numaranın durma zamanını bulun .
1 olana kadar veya 100 yinelemenin tamamen isteğe bağlı sınırına ulaşana kadar tekrarlayın. Eski durumda, kaç tane yineleme yaptığını yazdırın. İkinci durumda, bir tamsayı olmadığı sürece, "Başarısız" veya seçtiğiniz bir başka tutarlı çıktıyı yazdırın 1≤n≤100
. Bu seçenek için boş bir dize çıkarmayabilirsiniz. Bununla birlikte, aralığın dışındaki bir tamsayı çıktısına [1, 100] izin verilir.
Örnekler:
Input: 2
2->1
Output: 1
Input: 5
5->5->5->5->5->...
Output: Fail
Input: 10
10->6->8->3->7->16->4->2->1
Output: 8
Input: 100
100->25->23->15->17->12->9->19->20->7->16->4->2->1
Output: 13
Input: 10^100
10^100->684->126->108->113->12->9->19->20->7->16->4->2->1
Output: 13
Input: 12345678901234567890
12345678901234567890->286->104->12->9->19->20->7->16->4->2->1
Output: 11
Input: 1
--Depending on your code, one of two things may happen. Both are valid for the purposes of this question.
1
Output: 0
--Or:
1->3->7->16->4->2->1
Output: 6
Ben hesaplandığı gibi 10^100
ve 12345678901234567890
dil o farklı sonuçlar alabilirsiniz daha doğru ise sadece, söz konusu boyutta real destekleyen bir dil kullanarak.
puanlama
Bu kod golf olduğu için, en kısa bayt sayısına sahip olan cevap kazanır.