Problème
Afficher l’original (anglais)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.
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.