Problema 3
Buscaminas
minas.pas, minas.c, minas.cpp

Problema
El Buscaminas o Minesweeper en inglés es un juego de lógica creado en 1989 por Robert Donner, al que posteriormente se unió Curt Johnson. El juego debe su popularidad a ser uno de los que instala por defecto en los sistemas operativos Windows.
El juego consiste en despejar todas las casillas de una pantalla que no oculten una mina.
Algunas casillas tienen un número, este número indica cantidad de minas que tienen sus casillas circundantes. Así, si una casilla tiene el número 3 significa que de las ocho casillas que hay alrededor (si no está en una esquina o borde) hay 3 con minas y 5 sin minas. Si se descubre una casilla sin número indica que ninguna de las casillas vecinas tiene mina y éstas se descubren automáticamente.
El problema que tienes que resolver consiste en dado la distribución de las minas en una plantilla rectangular, asignar a aquellas casillas que no contienen mina la cantidad de minas que las circundan.

Entrada
La primera línea tendrá la cantidad de casos a evaluar. El primer renglón de cada caso tendrá dos números r y c, 1 ≤ r ≤ 100 y 1 ≤ c ≤ 100, la cantidad de renglones y columnas, respectivamente, de la plantilla rectangular. Después habrá r renglones, cada uno con c caracteres. Cada carácter sólo podrá ser ‘x’ o ‘m’, ‘x’ representará casilla vacía y ‘m’ una mina.

Salida
Por cada caso deberás sacar r renglones con c caracteres cada uno, cada carácter puede ser:
    Si en esa casillas hay una mina: ‘+’
    Si no hay mina en esa casilla: 1, 2, ...,8, dependiendo de la cantidad de minas que existan alrededor las casillas que están junta a ella.
    B si no tiene minas alrededor.
Cada caso deberá separarse con renglón en blanco.

Ejemplo

entrada salida
2
2 3
xmx
mxx
4 4
xmxm
mxxx
xxxx
mmxx
2+1
+21

2+2+
+221
331B
++1B

 


Concurso: ICPC - 5 Concurso Interno de la Universidad Bonaterra. 13/Mayo/2005
Propuesto por: Óscar Dávalos Orozco
Ayuda: entradas, salidas, sugerencias
Soluciones: minas.pas, minas.c, minas.cpp


World of πer