Já geramos campos Campo Minado , mas alguém realmente precisa varrer as minas geradas antes que o PCG exploda!
Sua tarefa é escrever um Minesweeper Solver que seja compatível com uma versão ligeiramente modificada da solução aceita “Working Minesweeper” (as ações são separadas por espaços para permitir campos maiores).
Entrada: um campo Campo Minado, campos separados por espaços. A primeira linha indica o número total de minas.
x
: Intocado!
: Flag- Dígito: número de minas em torno desse campo
Exemplo:
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
Saída: sua próxima etapa no formato action row column
(começando em zero)
Ações válidas:
0
: Abra1
: Colocar uma bandeira
Exemplo:
0 1 2
Regras:
- Você escreve um programa completo que utiliza um único campo como entrada (argumentos STDIN ou de linha de comando) e gera uma única ação (STDOUT). Portanto, você não pode salvar estados, exceto
!
. - Sua escolha deve seguir as melhores chances de sobrevivência. (ou seja, se houver uma movimentação 100% segura, faça-a)
- Isso é código-golfe ; a solução mais curta (em bytes UTF-8) vence
Testes:
Esses testes têm a finalidade de testar situações claras comuns; seu programa deve funcionar para todos os campos de teste.
Em:
4
x x x x
1 2 x x
0 1 2 x
0 0 1 x
Fora (qualquer um destes):
1 1 2
0 0 2
0 1 3
Em:
2
x x x
1 ! x
1 1 x
Fora (qualquer um destes):
0 0 0
0 0 1
0 1 2
0 2 2
1 0 2
Em:
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
Fora (qualquer um destes):
1 1 5
1 0 2
Em:
2
x x x
2 3 1
! 1 0
Fora (qualquer um destes):
0 0 1
1 0 0
1 0 2
0 0 2
ou 0 1 3
. Não vejo como um desses seria considerado seguro. (Eu não devo ser bom o suficiente em caça-minas ...)
F
ou P
parece melhor bandeira que !
:)