Gomoku atau Five berturut-turut adalah permainan papan yang dimainkan oleh dua pemain pada kotak dengan batu hitam dan putih. Siapa pun yang dapat menempatkan 5 batu berturut-turut (horizontal, vertikal atau diagonal) akan memenangkan permainan.
Aturan
Dalam KoTH ini kita akan memainkan aturan Swap2, yang berarti bahwa permainan terdiri dari dua fase: Pada fase awal kedua pemain menentukan siapa yang menjadi yang pertama / yang bermain hitam, setelah itu mereka akan menempatkan satu batu di setiap babak dimulai dengan pemain yang memilih hitam.
Tahap awal
Biarkan pemain menjadi A & B dan A akan membuka permainan:
- Tempat dua batu hitam dan satu putih di papan tulis
- B dapat memilih salah satu dari tiga langkah berikut:
- pemain B memutuskan untuk bermain hitam: fase awal berakhir
- pemain B memutuskan untuk menempatkan batu putih dan memainkan putih: fase awal berakhir
- pemain B memutuskan untuk memainkan satu batu hitam dan satu putih: A dapat memilih warnanya
Fase permainan
Setiap pemain menempatkan satu batu dengan warna mereka di papan, dimulai dengan pemain yang bermain hitam, ini berlangsung sampai tidak ada lagi ruang kosong untuk dimainkan (dalam hal ini seri) atau satu pemain berhasil memainkan batu dalam sebuah baris (dalam hal ini pemain itu menang).
Baris berarti horizontal, vertikal atau diagonal. Kemenangan adalah kemenangan - tidak masalah apakah pemain berhasil mencetak lebih dari satu baris.
Aturan permainan KoTH
- setiap pemain bermain melawan satu sama lain pemain dua kali:
- awalnya akan ditentukan secara acak siapa yang pergi dulu
- di game berikutnya, pemain yang bermain terakhir harus pergi terlebih dahulu
- menang bernilai 2 poin, seri 1 dan kalah 0
- tujuannya adalah untuk mencetak poin sebanyak mungkin
Bot Anda
Untuk membuat tantangan ini dapat diakses untuk sebanyak mungkin bahasa input / output akan melalui stdin / stdout (berbasis garis). Program juri akan meminta program Anda dengan mencetak baris ke stdin bot Anda dan bot Anda akan mencetak satu baris ke stdout .
Setelah Anda menerima EXIT
pesan, Anda akan diberikan setengah detik untuk menyelesaikan menulis ke file sebelum hakim akan menghentikan proses.
Keserampangan
Untuk membuat turnamen diverifikasi hakim menggunakan pengacakan unggulan dan bot Anda harus melakukannya juga, untuk alasan yang sama. Bot akan diberi seed melalui argumen command-line yang harus digunakan, silakan merujuk ke bagian selanjutnya.
Argumen
Bot menerima dua argumen baris perintah:
- nama lawan
- benih untuk keacakan
Status pengguna
Karena program Anda akan selalu dimulai baru untuk setiap gim, Anda harus menggunakan file untuk mempertahankan informasi apa pun yang ingin Anda simpan. Anda diperbolehkan membaca / menulis file apa pun atau membuat / menghapus sub-folder di direktori Anda saat ini. Anda tidak diperbolehkan mengakses file apa pun di direktori orang tua mana pun!
Input / Output format
BOARD
((X,Y),COLOR)
X
Y
COLOR
"B"
"W"
SP
XY
(X,Y)
|
Pada fase awal ada tiga jenis pesan:
Prompt (judge) -> Answer (bot)
"A" SP "[]" -> XY XY XY
"B" SP BOARD -> "B" | "W" SP XY | XY XY
"C" SP BOARD -> "B" | "W"
- Pesan pertama meminta tiga tupel, dua yang pertama adalah posisi batu hitam dan yang ketiga posisi untuk yang putih.
- Pesan kedua meminta:
"B"
-> pilih hitam"W" SP XY
-> Pilih putih dan letakkan batu putih diXY
XY XY
-> Tempatkan dua batu (yang pertama hitam dan yang kedua putih)
- Yang terakhir hanya menanyakan warna yang ingin Anda mainkan
Setelah itu permainan reguler akan dimulai dan pesan-pesannya akan menjadi lebih sederhana
N BOARD -> XY
N
XY
Ada satu pesan tambahan yang tidak mengharapkan jawaban
"EXIT" SP NAME | "EXIT TIE"
di mana NAME
nama bot yang menang. Pesan kedua akan dikirim jika permainan berakhir karena tidak ada yang menang dan tidak ada lagi ruang kosong untuk meletakkan batu (ini menyiratkan bahwa bot Anda tidak dapat disebutkan namanya TIE
).
Memformat
Karena pesan dari bot dapat didekodekan tanpa spasi, semua spasi akan diabaikan (mis. (0 , 0) (0,12)
Diperlakukan sama dengan (0,0)(0,12)
). Pesan dari juri hanya berisi spasi untuk memisahkan bagian yang berbeda (mis. Seperti yang disebutkan di atas dengan SP
), memungkinkan Anda untuk membagi garis pada spasi.
Setiap tanggapan yang tidak valid akan mengakibatkan hilangnya putaran itu (Anda masih akan menerima EXIT
pesan), lihat aturan.
Contoh
Berikut ini beberapa contoh pesan aktual:
A []
B [((0,0),"B"),((0,1),"W"),((14,14),"B")]
1 [((0,0),"B"),((0,1),"W"),((1,0),"B"),((1,1),"W"),((14,14),"B")]
Hakim
Anda dapat menemukan program juri di sini : Untuk menambahkan bot ke sana cukup buat folder baru di bots
folder, letakkan file Anda di sana dan tambahkan file yang meta
berisi nama , perintah , argumen , dan flag 0/1 (nonaktifkan / aktifkan stderr ) masing-masing pada jalur terpisah.
Untuk menjalankan turnamen, jalankan saja ./gomoku
dan debug satu bot yang dijalankan ./gomoku -d BOT
.
Catatan: Anda dapat menemukan informasi lebih lanjut tentang cara mengatur dan menggunakan juri di repositori Github. Ada juga tiga bot contoh ( Haskell , Python dan JavaScript ).
Aturan
- pada setiap perubahan bot * turnamen akan dijalankan kembali dan pemain dengan poin terbanyak menang (tie-breaker adalah pengiriman pertama)
- Anda dapat mengirimkan lebih dari satu bot selama mereka tidak memainkan strategi yang sama
- Anda tidak diperbolehkan menyentuh file di luar direktori Anda (mis. memanipulasi file pemain lain)
- jika bot Anda crash atau mengirim respons yang tidak valid, game saat ini dihentikan dan Anda kehilangan putaran itu
- sementara juri (saat ini) tidak memberlakukan batas waktu per putaran, Anda disarankan untuk menjaga waktu yang dihabiskan rendah karena bisa menjadi tidak layak untuk menguji semua pengajuan **
- bug yang menyalahgunakan dalam program hakim dianggap sebagai celah
* Anda disarankan untuk menggunakan Github untuk mengirimkan bot Anda secara langsung ke bots
direktori secara terpisah (dan berpotensi memodifikasi util.sh
)!
** Jika itu menjadi masalah Anda akan diberitahu, saya akan mengatakan apa pun di bawah 500ms (itu banyak!) Harus baik-baik saja untuk saat ini.
Obrolan
Jika Anda memiliki pertanyaan atau ingin membicarakan KoTH ini, silakan bergabung dengan Obrolan !
Jawaban:
KaitoBot
Ini menggunakan implementasi prinsip MiniMax yang sangat kasar. Kedalaman pencarian juga sangat rendah, karena kalau tidak, akan terlalu lama.
Mungkin edit untuk ditingkatkan nanti.
Ia juga mencoba memainkan Black jika memungkinkan, karena Wikipedia tampaknya mengatakan bahwa Black memiliki kelebihan.
Saya belum pernah bermain Gomoku sendiri, jadi saya mengatur tiga batu pertama secara acak karena kurang ide yang lebih baik.
EDIT: Membuat benih berubah secara dinamis karena jika benih melebihi 2 ^ 52 javascript tidak dapat menangani kenaikan dengan benar
sumber