Kami sudah membuat bidang Minesweeper , tetapi seseorang benar-benar harus menyapu ranjau yang dihasilkan sebelum PCG meledak!
Tugas Anda adalah menulis Solver Minesweeper yang kompatibel dengan versi yang sedikit dimodifikasi dari solusi yang diterima dari "Working Minesweeper" (tindakan dipisahkan oleh spasi untuk memungkinkan bidang yang lebih besar).
Input: Bidang Minesweeper, bidang yang dipisahkan oleh spasi. Baris pertama menunjukkan jumlah total tambang.
x
: Tidak tersentuh!
: Bendera- Digit: Jumlah tambang di sekitar bidang itu
Contoh:
10
0 0 1 x x x x x
0 0 2 x x x x x
0 0 2 ! x x x x
0 0 1 2 x x x x
0 0 0 1 x x x x
1 1 0 2 x x x x
x 1 0 2 x x x x
1 1 0 1 x x x x
Output: Langkah Anda berikutnya dalam format action row column
(mulai dari nol)
Tindakan yang Valid:
0
: Buka1
: Tempatkan bendera
Contoh:
0 1 2
Aturan:
- Anda menulis program lengkap yang mengambil bidang tunggal sebagai input (baik STDIN atau argumen baris perintah) dan mengeluarkan satu tindakan (STDOUT). Karenanya, Anda tidak dapat menyimpan status, kecuali untuk
!
. - Pilihan Anda harus mengikuti peluang terbaik untuk bertahan hidup. (Yaitu jika ada 100% langkah aman, ambillah)
- Ini adalah kode-golf ; solusi terpendek (dalam UTF-8 byte) menang
Tes:
Tes ini melayani tujuan pengujian untuk situasi yang jelas umum; program Anda harus bekerja untuk setiap bidang tes.
Di:
4
x x x x
1 2 x x
0 1 2 x
0 0 1 x
Keluar (semua ini):
1 1 2
0 0 2
0 1 3
Di:
2
x x x
1 ! x
1 1 x
Keluar (semua ini):
0 0 0
0 0 1
0 1 2
0 2 2
1 0 2
Di:
10
x x x x x x x x
1 3 3 x x x x x
0 1 ! 3 3 4 x x
0 2 3 ! 2 3 x x
0 1 ! 2 2 ! x x
Keluar (semua ini):
1 1 5
1 0 2
Di:
2
x x x
2 3 1
! 1 0
Keluar (semua ini):
0 0 1
1 0 0
1 0 2
0 0 2
atau 0 1 3
. Saya tidak bisa melihat bagaimana salah satu dari mereka dianggap aman. (Saya tidak harus cukup baik di kapal penyapu ranjau ...)
F
atau P
terlihat lebih baik daripada bendera !
:)