4 pozitif tamsayı ile Collatz benzeri bir sıra tanımlıyoruz s:
nbaşlangıç değerid > 1bölenm > 1çarpaniartım
(Orijinal Collatz sırasında d = 2 m = 3ve i = 1.)
Verilen bu tamsayılar saşağıdaki şekilde oluşturulacaktır:
s(0) = n- eğer
k > 0ves(k-1) mod d = 0sonras(k) = s(k-1) / d - eğer
k > 0ves(k-1) mod d != 0sonras(k) = s(k-1) * m + i
İle bir örnek dizisi d = 2, m = 3, i = 5ve n = 80olacak s = 80, 40, 20, 10, 5, 20, 10, 5, 20, ....
Her sekans, verilen herhangi bir sınırdan daha yüksek değerlere ulaşacaktır (yani sekans ıraksaktır) veya bazıları tve u( t!=u) için s(t) = s(u)eşitlik doğru olacaksa sonsuz bir döngüye girecektir.
Bizim sorunumuzda, bir dizi elemanının değeri, bu 10^9elemandan önce eleman tekrarından daha büyükse veya hiç değilse 1000, sekans ıraksak olarak kabul edilir.
Görev
Bu pozitif tamsayılar alan bir program ya da işlevi yazmak gerekir d mve igiriş ve çıkış olarak başlangıç değerleri dizileri (sonsuz döngüler ve sapma) tüm farklı bitiş türleri n = 1, 2, 3, ... 999, 1000üretebilir.
Giriş ayrıntıları
- Girdi bir dize veya liste (veya kendi dilinizde yakın eşdeğer) temsil eden (ortak şekilde) üç pozitif tamsayılar olduğu
d,mveibu sırayla.dvemen azından2. Her iki sayı da büyük değildir100.
Çıktı ayrıntıları
Çıktı özellikleri biraz garip. Önce örnekleri incelemeye değer olabilir.
- Standart çıktıya (veya en yakın alternatife) çıktı almalı veya bir dize döndürmelisiniz.
- Eğer ıraksak sekans mümkünse ilk satır olmalıdır
DIVERGENT. - Bir dizinin döngüsünün benzersiz bir temsili, en küçük sayının boşluklarla ayrılan son sayı olduğu dönüştür. Örneğin
s = 2 1 4 2 1 4 2 1, döngü ise4 2 1. - Takip eden her satırda, her bir benzersiz döngüyü tam olarak sözcüğün önünde bir kez çıkarmalısınız
LOOP. ÖrneğinLOOP 4 2 1 - Döngüler, son elemanlarına göre artan sırada olmalıdır.
- Sondaki satır başı isteğe bağlıdır.
Örnekler:
İlk satırlar girişlerdir ve sonraki satırlar boş satır çıkana kadar.
2 3 1
LOOP 4 2 1
2 2 6
LOOP 8 4 2 1
LOOP 12 6 3
3 7 8
DIVERGENT
LOOP 15 5 43 309 103 729 243 81 27 9 3 1
LOOP 22 162 54 18 6 2
LOOP 36 12 4
3 9 1
DIVERGENT
6 9 9
DIVERGENT
LOOP 18 3 36 6 1
LOOP 27 252 42 7 72 12 2
LOOP 45 414 69 630 105 954 159 1440 240 40 369 3330 555 5004 834 139 1260 210 35 324 54 9 90 15 144 24 4
LOOP 81 738 123 1116 186 31 288 48 8
LOOP 99 900 150 25 234 39 360 60 10
LOOP 126 21 198 33 306 51 468 78 13
10 10 10
LOOP 20 2 30 3 40 4 50 5 60 6 70 7 80 8 90 9 100 10 1
93 91 92
DIVERGENT
LOOP 2185 198927 2139 23
LOOP 4278 46
Ideone üzerinde Python 3'te referans uygulaması.
Bu kod golf çok kısa giriş kazanır.