Kami mendefinisikan urutan seperti Collatzs dengan 4 bilangan bulat positif:
nnilai awald > 1pembagim > 1penggandaikenaikan
(Dalam urutan Collatz asli d = 2 m = 3dan i = 1.)
Mengingat bilangan bulat ini sakan dibuat dengan cara berikut:
s(0) = n- jika
k > 0dans(k-1) mod d = 0kemudians(k) = s(k-1) / d - jika
k > 0dans(k-1) mod d != 0kemudians(k) = s(k-1) * m + i
Contoh urutan dengan d = 2, m = 3, i = 5dan n = 80akan s = 80, 40, 20, 10, 5, 20, 10, 5, 20, ....
Setiap urutan akan mencapai nilai yang lebih tinggi daripada batas tertentu (yaitu urutannya berbeda) atau masuk ke loop tak terbatas jika untuk beberapa tdan u( t!=u) s(t) = s(u)kesetaraan akan benar.
Dalam masalah kami jika nilai elemen urutan lebih besar dari 10^9 atau tidak ada pengulangan elemen sebelum 1000elemen th urutan dianggap berbeda.
Tugas
Anda harus menulis sebuah program atau fungsi yang mengambil bilangan bulat positif d mdan isebagai input dan output semua jenis akhir yang berbeda dari urutan (loop tak terhingga dan divergensi) yang nilai awalnyan = 1, 2, 3, ... 999, 1000 dapat dihasilkan oleh .
Detail input
- Input adalah string atau daftar (atau setara terdekat dalam bahasa Anda) mewakili (dengan cara umum) tiga bilangan bulat positif
d,mdanidalam urutan itu.ddanmsetidaknya2. Angka keduanya tidak lebih besar dari100.
Rincian keluaran
Spesifikasi output agak bertele-tele. Layak untuk memeriksa contoh terlebih dahulu.
- Anda harus output ke output standar (atau alternatif terdekat) atau mengembalikan string.
- Jika urutan divergen dimungkinkan, baris pertama seharusnya
DIVERGENT. - Representasi unik dari loop urutan adalah rotasi itu di mana angka terkecil adalah yang terakhir dipisahkan oleh spasi. Misal jika
s = 2 1 4 2 1 4 2 1loop4 2 1. - Di setiap baris berikut Anda harus menampilkan setiap loop unik tepat sekali didahului oleh kata
LOOP. MisalnyaLOOP 4 2 1 - Loop harus dalam urutan menaik sehubungan dengan elemen terakhir mereka.
- Mengejar baris baru adalah opsional.
Contoh:
Baris pertama adalah input dan yang berikutnya sampai baris kosong adalah output.
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
Referensi implementasi di Python 3 pada Ideone.
Ini adalah kode-golf sehingga entri terpendek menang.