Problème
Annoter un plateau rectangulaire. Une étoile (*) représente une mine et un point (.) une case sûre. Pour chaque case sûre, comptez les mines dans les huit cases adjacentes, y compris en diagonale. Remplacez-la par le nombre de mines de 1 à 8, ou laissez un point si le compte est zéro. Préservez chaque mine. Les cases en dehors du plateau n'existent pas.
Implémentez minesweeper_neighbor_counts(board).
Entrée
board : Les lignes du haut vers le bas ; les caractères vont de gauche à droite.
Sortie
Renvoyez les lignes annotées dans le même ordre et avec les mêmes dimensions.
Contraintes
1 ≤ lignes, colonnes ≤ 200. Chaque ligne a la même longueur non nulle et ne contient que * et . .
Exemples
Entrée :
board = ["*..", "...", "..*"]
Sortie attendue :
expected = ["*1.", "121", ".1*"]
Entrée :
std::vector<std::string> board = {"*..", "...", "..*"};
Sortie attendue :
std::vector<std::string> expected = {"*1.", "121", ".1*"};
Entrée :
string[] board = new string[] {"*..", "...", "..*"};
Sortie attendue :
string[] expected = new string[] {"*1.", "121", ".1*"};
Explication
La case centrale touche les deux mines, donc son compte est 2. La case en haut à droite et celle en bas à gauche ne touchent aucune mine et restent des points. Les autres cases sûres touchent une mine.
Entrée :
board = ["..."]
Sortie attendue :
expected = ["..."]
Entrée :
std::vector<std::string> board = {"..."};
Sortie attendue :
std::vector<std::string> expected = {"..."};
Entrée :
string[] board = new string[] {"..."};
Sortie attendue :
string[] expected = new string[] {"..."};
Explication
Ce plateau à une seule ligne ne contient aucune mine. Tous les comptes sont à zéro, donc chaque point reste un point.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Seules les cases sûres changent ; les mines restent exactement où elles sont.
Indice 2
Pour chaque point, inspectez les huit positions autour et comptez les mines voisines.
Indice 3
Faites attention aux bords et aux coins pour ne pas lire en dehors du plateau.
Complexité attendue
temps O(r*c), espace supplémentaire O(r*c)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.