4 pozitif tamsayı ile Collatz benzeri bir sıra tanımlıyoruz s
:
n
başlangıç değerid > 1
bölenm > 1
çarpani
artım
(Orijinal Collatz sırasında d = 2
m = 3
ve i = 1
.)
Verilen bu tamsayılar s
aşağıdaki şekilde oluşturulacaktır:
s(0) = n
- eğer
k > 0
ves(k-1) mod d = 0
sonras(k) = s(k-1) / d
- eğer
k > 0
ves(k-1) mod d != 0
sonras(k) = s(k-1) * m + i
İle bir örnek dizisi d = 2, m = 3, i = 5
ve n = 80
olacak 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ı t
ve 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^9
elemandan ö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
m
ve i
giriş 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
,m
vei
bu sırayla.d
vem
en 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.