Collatz Sırası Eğer herhangi bir pozitif tamsayı ile başlar bu örnek için biz 10 kullanacaktır ve buna adımların bu grubu uygulamak nerede (ayrıca 3x + 1 sorun olarak adlandırılır) 'dir:
if n is even:
Divide it by 2
if n is odd:
Multiply it by 3 and add 1
repeat until n = 1
10 eşit, yani 5 elde etmek için 2'ye bölüyoruz. 5 tuhaf, bu yüzden 3 ile çarpıyoruz ve 16'yı almak için 1 ekliyoruz. 16 eşit, yani 8 elde etmek için ikiye böldüm. 4, 2'dir ve 2'nin yarısı 1'dir. Bu bize 6 adım attığından, 10'un 6 durma mesafesine sahip olduğunu söylüyoruz .
Bir Süper Collatz numarası, durma mesafesi her sayının durma mesafesinden daha küçük olan bir sayıdır. Örneğin, 6 bir Süper Collatz sayısıdır, çünkü 6, 8, 5 durma mesafesine sahiptir 5, 4, 2, 3, 7, 2, 1 ve 1'e sahiptir. ( OEIS’de A006877 ) bir numara almak n kadar tüm Süper Collatz numaraları üzerinden giriş olarak ve çıkış n .
kurallar
Tam Program veya fonksiyon kabul edilebilir.
Süper Collatz sırasını önceden hesaplayamaz veya zor kodlayamazsınız.
Herhangi bir makul formatta girdi alabilirsiniz.
Çıktı, işlevden bir liste olarak döndürülebilir veya STDOUT'a veya bir dosyaya yazdırılabilir. Hangisi en uygunsa.
Geçersiz girişler (sayılar, ondalık sayılar, negatif sayılar vb.) Tanımsız davranışa neden olur.
Örnek ungolfed python
def collatzDist(n):
if n == 1:
return 0
if n % 2 == 0:
return 1 + collatzDist(n / 2)
return 1 + collatzDist((n * 3) + 1)
n = input()
max = -1
superCollatz = []
for i in range(1, n + 1):
dist = collatzDist(i)
if dist > max:
superCollatz.append(i)
max = dist
print superCollatz
Örnek io:
#in #out
4 --> 1, 2, 3
50 --> 1, 2, 3, 6, 7, 9, 18, 25, 27
0 --> invalid
10000 --> 1, 2, 3, 6, 7, 9, 18, 25, 27, 54, 73, 97, 129, 171, 231, 313, 327, 649, 703, 871, 1161, 2223, 2463, 2919, 3711, 6171
Ayrıca burada ilk 44 Süper Collatz numarası var:
1, 2, 3, 6, 7, 9, 18, 25, 27, 54, 73, 97, 129, 171, 231, 313, 327, 649, 703, 871, 1161, 2223, 2463, 2919, 3711, 6171, 10971, 13255, 17647, 23529, 26623, 34239, 35655, 52527, 77031, 106239, 142587, 156159, 216367, 230631, 410011, 511935, 626331, 837799