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
sumber
0 0 2
atau0 1 3
. Saya tidak bisa melihat bagaimana salah satu dari mereka dianggap aman. (Saya tidak harus cukup baik di kapal penyapu ranjau ...)F
atauP
terlihat lebih baik daripada bendera!
:)Jawaban:
Mathematica
Masih belum golf. Membutuhkan lebih banyak pekerjaan pada format I / O.
Edit: Bonus Track
Saya membuat taman bermain interaktif yang menghitung probabilitas bom dengan menghitung semua solusi yang mungkin untuk konfigurasi yang diberikan:
Petunjuk untuk mengujinya tanpa memasang Mathematica:
Slider mengubah dimensi papan. Ini hanya program samar, tidak sepenuhnya diuji, silakan laporkan bug apa pun. Saya belum menerapkan fitur "jumlah total bom yang tersedia di kapal". Diasumsikan tak terbatas.
sumber