Minesweeper è un popolare gioco per computer che probabilmente hai perso tempo giocando in cui provi a rivelare le celle che sono miniere in una griglia rettangolare sulla base di suggerimenti su quante miniere vicine ha ogni cella non-mia. E se non l'hai ancora giocato, fallo qui .
Un bel fatto matematico su una griglia di Minesweeper (aka board) è che:
Una tavola e il suo complemento hanno lo stesso numero totale di mine . ( Prova )
Vale a dire che se si dispone di una griglia Minesweeper completamente rivelata, la somma di tutti i numeri su quella griglia, ovvero il totale della miniera , sarà uguale al totale della miniera del complemento della griglia, che è la griglia in cui ogni miniera è stata sostituita con una non mia e ogni non mia sostituita con una miniera.
Ad esempio, per la griglia di Minesweeper
**1..
34321
*2**1
il totale delle miniere è 1 + 3 + 4 + 3 + 2 + 1 + 2 + 1 = 17.
Il complemento della griglia è
24***
*****
3*44*
che ha di nuovo il mio totale 2 + 4 + 3 + 4 + 4 = 17.
Scrivi un programma che includa una griglia di dragamine arbitraria in forma di testo dove *
rappresenta una miniera e 1
attraverso 8
rappresenta il numero di mine adiacenti a una cella non miniera. Puoi usare .
o 0
o
(spazio) per rappresentare celle senza vicini di miniera, la tua scelta. Si può presumere che la griglia di input sarà contrassegnata correttamente, cioè ogni cella non mia indicherà accuratamente il numero totale di mine immediatamente adiacenti ad essa ortogonalmente o diagonalmente.
Il vostro programma deve stampare il complemento della griglia nello stesso formato (utilizzando lo stesso .
, 0
o
come vi aspettavate in ingresso).
Vince il codice più breve in byte.
- Invece di un programma è possibile scrivere una funzione che accetta la griglia di input come stringa e stampa o restituisce la griglia del complemento.
- Una nuova riga finale nell'input o output va bene, ma non dovrebbero esserci altri caratteri oltre a quelli che formano la griglia.
- Puoi supporre che una griglia 1 × 1 sia l'input più piccolo.
Casi test
Tutti gli input e gli output potrebbero essere scambiati poiché il complemento del complemento è la griglia originale. Le griglie possono essere ruotate anche per ulteriori casi di test.
Ingresso:
111
1*1
111
Produzione:
***
*8*
***
Ingresso:
.
Produzione:
*
Ingresso:
*11*1.1**1...1***1.....1*****1..........
Produzione:
1**2***11*****1.1*******1...1***********
Input: ( esempio Cut The Knot )
**212*32
333*33**
1*22*333
222222*1
*33*2232
2**22*2*
Produzione:
24***4**
***7**64
*8**7***
******8*
4**7****
*33**5*3
?
accettabile utilizzare un delimitatore di fine (ad esempio ) sulla riga dopo l'ultima riga della scheda oppure è possibile rilevare il numero di righe di input tramite la riga di comando?