pengantar
Metode middle-square digunakan untuk menghasilkan angka pseudorandom. Namun, ini bukan metode yang baik dalam praktik, karena periode ini biasanya sangat singkat dan memiliki beberapa kelemahan parah. Bagaimana cara kerjanya? Mari kita ambil contoh:
Untuk benih, kami memilih 123456:
Seed 123456
Benih kuadrat (biji × biji), sama dengan:
Seed² 15241383936
Kami mulai dengan angka 6 digit . Itu berarti bahwa benih kuadrat harus memberikan angka 12 digit . Jika ini bukan masalahnya, nol terkemuka ditambahkan untuk mengkompensasi:
Seed² 015241383936
Kami kemudian mengambil bagian tengah dari nomor tersebut, dengan ukuran yang sama dengan biji:
Seed² 015241383936
^^^^^^
Ini kemudian kami benih baru : 241383. Kami ulangi proses yang sama seperti yang ditunjukkan di atas. Kami mendapatkan yang berikut ini:
0: 123456
015241383936
| |
1: 241383
058265752689
| |
2: 265752
070624125504
| |
3: 624125
389532015625
| |
4: 532015
283039960225
| |
5: 039960
001596801600
| |
6: 596801
Dan ini terus berlanjut untuk sementara waktu ... Sekarang kita tahu apa metode kuadrat-tengah, mari kita hadapi tantangan:
Tugas
Setiap benih memiliki sebuah periode . Periode n- digit benih tidak boleh lebih dari 8 n . Misalnya, benih 82. Ini akan memberikan urutan berikut:
82 > 72 > 18 > 32 > 02 > 00 > 00 > 00 > 00 > 00
|____|____|____|____|____|____|____|____|____|___...
0 1 2 3 4 5 6 7 8 9
Anda dapat melihat bahwa periodenya sama dengan 5 , sebelum mengandung digit yang sama lagi. Tugas Anda adalah, ketika diberi benih yang lebih besar dari 0 yang tidak mengandung nol terkemuka, hasilkan periode benih . Jadi, dalam hal ini, Anda perlu output 5.
Contoh lain adalah 24:, yang memberikan yang berikut:
24 > 57 > 24
|____|____|___...
0 1 2
Seperti yang Anda lihat, tidak semua urutan diakhiri 0. Siklus ini memiliki periode 1 .
Uji kasus
Input > Output
24 > 1
82 > 5
123456 > 146
8989 > 68
789987 > 226
Pastebins dengan urutan untuk 123456 , 8989 , 789987
Ini adalah kode-golf , jadi pengiriman dengan jumlah byte paling sedikit menang!
Anda dapat mengasumsikan bahwa input tidak akan pernah memiliki jumlah digit yang tidak rata.
24periodik (dengan periode 2, aku akan mengatakan),82adalah akhirnya periodik (dengan periode 1).