Buscaminas es un juego de computadora popular en el que probablemente hayas perdido el tiempo jugando donde tratas de revelar las celdas que son minas en una cuadrícula rectangular en base a pistas de cuántas minas vecinas tiene cada celda no minera. Y en caso de que no lo hayas jugado, hazlo aquí .
Un ingenioso hecho matemático sobre una cuadrícula Buscaminas (también conocido como tablero) es que:
Un tablero y su complemento tienen el mismo número total de minas . ( Prueba )
Es decir, si tiene una cuadrícula del Buscaminas completamente revelada, la suma de todos los números en esa cuadrícula, es decir, el total de la mina , será igual al total de la mina del complemento de la cuadrícula, que es la cuadrícula donde se ha reemplazado cada mina con una no mía y cada no mía reemplazada por una mina.
Por ejemplo, para la cuadrícula Buscaminas
**1..
34321
*2**1
el total de la mina es 1 + 3 + 4 + 3 + 2 + 1 + 2 + 1 = 17.
El complemento de la cuadrícula es
24***
*****
3*44*
que tiene el mío total 2 + 4 + 3 + 4 + 4 = 17 nuevamente.
Escribir un programa que toma en una rejilla arbitraria Minesweeper en forma de texto, donde *
representa una mina y 1
a través de 8
representar el número de minas adyacentes a una célula no mía. Se puede utilizar .
o 0
o
(espacio) para representar a las células sin vecinos mina, su opción. Puede suponer que la cuadrícula de entrada se marcará correctamente, es decir, cada celda que no sea una mina indicará con precisión el número total de minas inmediatamente adyacentes a ella de forma ortogonal o diagonal.
Su programa debe imprimir el complemento de la red en el mismo formato (con el mismo .
, 0
o
como se esperaba en la entrada).
El código más corto en bytes gana.
- En lugar de un programa, puede escribir una función que tome la cuadrícula de entrada como una cadena e imprima o devuelva la cuadrícula del complemento.
- Una nueva línea final en la entrada o salida está bien, pero no debe haber otros caracteres además de los que forman la cuadrícula.
- Puede suponer que una cuadrícula de 1 × 1 será la entrada más pequeña.
Casos de prueba
Todas las entradas y salidas podrían intercambiarse ya que el complemento del complemento es la cuadrícula original. Las rejillas también se pueden girar para otros casos de prueba.
Entrada:
111
1*1
111
Salida:
***
*8*
***
Entrada:
.
Salida:
*
Entrada:
*11*1.1**1...1***1.....1*****1..........
Salida:
1**2***11*****1.1*******1...1***********
Entrada: ( Ejemplo de cortar el nudo )
**212*32
333*33**
1*22*333
222222*1
*33*2232
2**22*2*
Salida:
24***4**
***7**64
*8**7***
******8*
4**7****
*33**5*3
?
aceptable usar un delimitador final (por ejemplo ) en la línea después de la línea final del tablero, o podría tomar el número de líneas de entrada a través de la línea de comando?