#!/usr/bin/python3 # 33-Z5-3 # spočítej miny v okolí políčka def mines_around(mines, pos): total = 0 for i in pos-1, pos, pos+1: if i >= 0 and i < len(mines) and mines[i] == "M": total += 1 return total # doplnění zbytku min, pokud známe několik prvních políček def fill_remaining_mines(mine_counts, first_mines): # příprava pole s výsledkem mines = first_mines.copy() mines.extend(["." for i in range(len(first_mines), len(mine_counts))]) for i in range(len(first_mines), len(mine_counts)): # abychom zjistili počet min zde, díváme se na políčko o 1 zpět mines_here = mine_counts[i - 1] - mines_around(mines, i - 1) if mines_here == 0: pass elif mines_here == 1: mines[i] = "M" else: # chyba, tipli jsme si začátek špatně return None # kontrola posledniho políčka if mine_counts[-1] != mines_around(mines, len(mines) - 1): return None # řešení nalezeno return mines # načtení vstupu num_mines = int(input()) mine_counts = list(map(int, list(input()))) # tipneme si for guess in ["."], ["M"]: mines = fill_remaining_mines(mine_counts, guess) if mines: # tip vyšel print("".join(mines)) break