Campo Minado é um jogo de quebra-cabeça popular, onde você deve descobrir quais peças são "minas" sem clicar nessas peças. Cada peça é uma mina (representada por *
) ou uma pista, ou seja, um número de 0 a 8 representando quantas das 8 peças vizinhas são minas. Sua tarefa hoje é pegar uma placa contendo as minas e preencher todas as pistas. Por exemplo, observe a seguinte placa 5x4, com 5 minas:
*
* *
*
*
Depois de preencher as pistas, o quadro ficará assim:
2*211
*33*1
12*32
0112*
Detalhes
Você deve escrever um programa completo ou uma função que capte uma grade de caracteres contendo apenas espaços e asteriscos e produza outra grade em que cada espaço seja substituído pelo número de minas adjacentes (asteriscos). Qualquer um destes são formatos aceitáveis para suas grades:
Uma string com novas linhas
Uma lista 2D de caracteres / cadeias de caracteres únicos
Uma lista de strings
Você pode assumir que a grade será de pelo menos 1x1, embora seja possível que seja todas as minas ou todos os espaços.
A grade de entrada sempre será preenchida com o número apropriado de espaços. Como de costume, esse é um código de golfe , então as brechas padrão se aplicam e a resposta mais curta em bytes vence!
IO de amostra
Para que você possa ver o espaço em branco, mostrarei todas as E / S de amostra com colchetes ao redor.
Input:
[ * ]
[* ]
[ ]
[ ]
[ ** ]
[ * * ]
Output:
[1101*1]
[*10111]
[110000]
[012210]
[12**21]
[1*33*1]
Input:
[****]
[****]
Output:
[****]
[****]
Input:
[ ]
[ ]
[ ]
[ ]
Output:
[000]
[000]
[000]
[000]
Input:
[* ]
[** ]
[ ]
[ *]
Ouput:
[*310]
[**10]
[2221]
[001*]
Input:
[** ]
[* *]
[ * ]
[ ]
[* ]
[**** ]
Output:
[**1011]
[*4211*]
[12*111]
[121100]
[*43210]
[****10]
Input:
[ * ]
[ * ]
[ * ]
[** *** ]
[ *** ]
[ ]
[ ** ]
[ * * ]
[* ** ]
[ ** ]
Output:
[00001*1111]
[00002221*1]
[22102*4321]
[**102***31]
[221013***1]
[0000013542]
[0112111**1]
[12*2*12442]
[*212112**2]
[1100002**2]