Latar Belakang
Sudoku adalah teka-teki angka di mana, mengingat kotak dibagi menjadi kotak-kotak berukuran , setiap angka hingga harus muncul tepat satu kali di setiap baris, kolom, dan kotak.
Dalam permainan Catur, Raja dapat berpindah ke salah satu (paling banyak) 8 sel yang berdekatan secara bergantian. "Berdekatan" di sini berarti berdampingan secara horizontal, vertikal atau diagonal.
Tur The King adalah analogi dari tur Knight; itu adalah jalan (mungkin terbuka) yang mengunjungi setiap sel tepat sekali di papan yang diberikan dengan gerakan Catur King.
Tugas
Pertimbangkan kisi Sudoku 6-kali-6:
654 | 321
123 | 654
----+----
462 | 135
315 | 246
----+----
536 | 412
241 | 563
dan tur King (dari 01
ke 36
):
01 02 03 | 34 35 36
31 32 33 | 04 05 06
---------+---------
30 23 28 | 27 26 07
22 29 24 | 25 09 08
---------+---------
21 19 16 | 10 14 13
20 17 18 | 15 11 12
Tur membentuk angka 36 digit 654654564463215641325365231214123321
.
Mengambil tur King yang berbeda memberi jumlah yang lebih besar; misalnya, saya dapat menemukan jalur yang dimulai dengan 65<6>56446556...
yang pasti lebih besar dari yang di atas. Anda dapat mengubah papan Sudoku untuk mendapatkan angka lebih tinggi:
... | ...
.6. | ...
----+----
..6 | ...
.5. | 6..
----+----
.45 | .6.
6.. | 5..
Papan tidak lengkap ini memberikan urutan awal 666655546...
yang merupakan urutan optimal dari 9 digit awal.
Tugas Anda adalah menemukan angka terbesar untuk standar 9-by-9 Sudoku dengan 3-oleh-3 kotak , yaitu
... | ... | ...
... | ... | ...
... | ... | ...
----+-----+----
... | ... | ...
... | ... | ...
... | ... | ...
----+-----+----
... | ... | ...
... | ... | ...
... | ... | ...
Perhatikan bahwa tantangan ini bukan kode-golf ; fokusnya adalah untuk benar-benar menemukan solusi daripada menulis sebuah program kecil yang secara teori berfungsi.
Kriteria penilaian & menang
Skor pengiriman adalah angka 81 digit yang ditemukan oleh program Anda. Pengajuan dengan skor tertinggi akan menang. Program Anda juga harus menampilkan kisi Sudoku dan tur Raja dalam bentuk yang dapat dibaca manusia; harap sertakan mereka dalam kiriman Anda.
Program Anda dapat menampilkan beberapa hasil; skor Anda adalah maksimum dari mereka.
Tidak ada batasan waktu untuk program Anda. Jika program Anda terus berjalan dan menemukan angka yang lebih tinggi setelahnya, Anda dapat memperbarui skor pengiriman dengan mengedit posting. Tiebreaker adalah waktu paling awal untuk mencapai skor, yaitu waktu posting (jika belum diedit) atau waktu edit ketika skor diperbarui (jika tidak).
sumber
Jawaban:
Python + Z3 , 999899898789789787876789658767666545355432471632124566352413452143214125313214321, optimal
Berjalan sekitar setengah jam, menghasilkan
Kode
sumber