Latar Belakang
Hex adalah gim strategi abstrak dua pemain yang dimainkan pada K×K
belah ketupat ubin heksagonal. Dua sisi yang berlawanan dari belah ketupat berwarna putih, dan dua lainnya hitam, dan dua pemain, hitam dan putih, secara bergiliran menempatkan token warna mereka pada ubin kosong. Pemain yang pertama kali berhasil membangun jalur antara sisi yang berlawanan dari warna mereka adalah pemenangnya. Diketahui bahwa permainan tidak dapat berakhir imbang, dan bahwa pemain pertama memiliki strategi kemenangan terlepas dari ukuran papan (lihat halaman Wikipedia untuk detailnya).
Tugas
Dalam tantangan ini, kami memperbaiki ukuran papan di K = 4
, dan mewakili papan sebagai kisi berikut. Garis tebal menunjukkan ubin yang berdekatan.
Tugas Anda adalah menghasilkan strategi kemenangan untuk pemain pertama, yang dapat Anda pilih untuk menjadi hitam atau putih. Ini berarti bahwa tindakan legal apa pun yang dilakukan pemain lawan, permainan Anda harus menghasilkan kemenangan. Input Anda adalah posisi permainan (pengaturan token di papan tulis), dan output Anda adalah langkah hukum, dalam format yang ditentukan di bawah ini. Jika Anda ingin menemukan strategi pemenang sendiri, jangan baca spoiler ini:
Garis besar satu strategi kemenangan yang mungkin, dengan anggapan putih menjadi yang utama. Pertama pilih 5. Setelah itu, jika Anda memiliki jalur dari 5 ke baris bawah ATAU hitam memilih 0 atau 1 di titik mana pun, balas dengan memilih mana dari 0 atau 1 yang kosong. Jika hitam memilih 9 atau 13, pilih 10 lalu 14 atau 15 mana yang kosong. Jika hitam tidak memilih 9, 13 atau 14, maka pilih 9 dan selanjutnya 13 atau 14 mana yang kosong. Jika hitam memilih 14, balas dengan memilih 15. Berikutnya, pilih 10 jika kosong; jika hitam memilih 10, jawab dengan 11. Jika hitam lalu pilih 6, jawab dengan 7, dan selanjutnya 2 atau 3 mana yang kosong. Jika hitam tidak memilih 6, pilih itu, sehingga Anda memiliki jalur dari 5 ke baris bawah.
Masukan dan keluaran
Input Anda adalah string 16 karakter WBE
, yang berarti putih, hitam dan kosong. Mereka mewakili ubin papan, sebagaimana disebutkan di atas. Anda dapat memilih metode input (yang juga menentukan metode output Anda) dari yang berikut:
- Input dari STDIN, output ke STDOUT.
- Input sebagai satu argumen baris perintah, output ke STDOUT.
- Input sebagai 16 argumen argumen perintah karakter tunggal, output ke STDOUT.
- Input sebagai argumen fungsi bernama, output sebagai nilai balik.
Output Anda mewakili ubin tempat Anda meletakkan token berikutnya, karena giliran Anda untuk bergerak. Anda dapat memilih dari format output berikut:
- Indeks berbasis nol (seperti yang digunakan dalam gambar di atas).
- Indeks berbasis satu.
- String input dengan satu
E
diganti oleh yang manaW
atauB
Anda pilih untuk pemain Anda.
Aturan
Strategi Anda harus deterministik. Anda tidak diharuskan untuk menangani posisi permainan dengan benar yang tidak dapat dijangkau dari papan kosong menggunakan strategi Anda, atau posisi yang sudah menang untuk salah satu pemain, dan Anda mungkin menabraknya. Sebaliknya, di papan yang dapat dijangkau menggunakan strategi Anda, Anda harus mengembalikan langkah hukum.
Ini adalah kode-golf, sehingga jumlah byte terendah menang. Celah standar tidak diijinkan.
Pengujian
Saya telah menulis kontroler Python 3 untuk memvalidasi entri, karena akan sangat membosankan untuk dilakukan dengan tangan. Anda dapat menemukannya di sini . Ini mendukung tiga format input pertama dan fungsi Python 3 (fungsi dalam bahasa lain harus dimasukkan ke dalam program), ketiga format output, dan kedua pemain. Jika sebuah strategi tidak menang, itu akan menghasilkan permainan yang hilang itu ditemukan, sehingga Anda dapat mengubah program Anda.
Incorrect response 'WWWWWWWWBBBBBBBB' to message 'WWWWWWWWBBBBBBBB'.
Saya seharusnya menang sejak lama, atau saya salah?