Minesweeper è un gioco molto diffuso in cui devi trovare le mine seguendo gli indizi numerici che indicano quante mine si trovano direttamente adiacenti a una casella, in orizzontale, in verticale o in diagonale.
Il tuo compito è aggiungere il numero di mine alle caselle vuote di un tabellone di Minesweeper completato.
Il tabellone stesso è un rettangolo composto da caselle che sono vuote (' ') oppure una mina ('*').
Per ogni casella vuota, conta il numero di mine adiacenti (in orizzontale, in verticale, in diagonale). Se la casella vuota non ha mine adiacenti, lasciala vuota. Altrimenti sostituiscila con il numero di mine adiacenti.
Ad esempio, potresti ricevere un tabellone 5 x 4 come questo (qui gli spazi vuoti sono rappresentati con il carattere «·» per la visualizzazione sullo schermo):
·*·*·
··*··
··*··
·····
Che il codice dovrebbe trasformare in questo:
1*3*1
13*31
·2*2·
·111·
Il campo minato è rappresentato come una stringa, con un carattere di nuova riga alla fine di ogni riga.
Un esempio sarebbe " \n * \n \n"
Il buffer per la stringa di input usa i byte 64-319 della memoria lineare.
La stringa di input può essere modificata sul posto, se lo si desidera.
Iscriviti a Exercism per imparare e padroneggiare WebAssembly con 87 esercizi e il mentoring di persone reali, tutto gratis.
Esploriamo i cicli for annidati, l'uso intelligente di min/max per semplificare il controllo dei limiti, le pipeline funzionali e l'uso di matrici bidimensionali.