Ми вже генерували поля міночистача , але хтось дійсно повинен змітати ці згенеровані міни, перш ніж PCG підірветься!
Ваше завдання полягає в тому, щоб написати міночислювач, сумісний із дещо зміненою версією прийнятого рішення "Робочий тральщик" (дії розділені пробілами, щоб мати можливість отримати більші поля).
Введення: Поле міночистки, поля, розділені пробілами. Перший рядок позначає загальну кількість мін.
x
: Недоторканий!
: Прапор- Цифра: кількість мін навколо цього поля
Приклад:
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
Вихід: Ваш наступний крок у форматі action row column
(починаючи з нуля)
Дійсні дії:
0
: Відкрий це1
: Поставте прапор
Приклад:
0 1 2
Правила:
- Ви пишете повну програму, яка приймає одне поле як вхідне (або STDIN, або аргументи командного рядка) і виводить одну дію (STDOUT). Таким чином, ви не можете зберегти стану, за винятком
!
. - Ваш вибір повинен відповідати найкращим шансам на виживання. (тобто, якщо є 100% безпечний хід, прийміть це)
- Це код-гольф ; виграє найкоротше рішення (у байтах UTF-8)
Тести:
Ці тести служать метою тестування на поширені чіткі ситуації; Ваша програма повинна працювати для кожного тестового поля.
В:
4
x x x x
1 2 x x
0 1 2 x
0 0 1 x
Вихід (будь-який із них):
1 1 2
0 0 2
0 1 3
В:
2
x x x
1 ! x
1 1 x
Вихід (будь-який із них):
0 0 0
0 0 1
0 1 2
0 2 2
1 0 2
В:
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
Вихід (будь-який із них):
1 1 5
1 0 2
В:
2
x x x
2 3 1
! 1 0
Вихід (будь-який із них):
0 0 1
1 0 0
1 0 2
0 0 2
або 0 1 3
. Я не бачу, як будь-який із них вважатиметься безпечним. (Я не повинен бути досить хорошим на тральщику ...)
F
або P
прапор виглядає краще, ніж !
:)