[f1] Saper
Data zakończenia: 2024-11-04 23:59
Języki:
c
cpp
java
pas
Limit czasu: 3.0 s
Limit pamięci: 0 MB
Limit rozmiaru rozwiązania: 100 kB
Problem
Czy kiedykolwiek grałeś w Sapera? To taka mała, przyjemna gierka dostarczana z systemami operacyjnymi, których nazw niestety nie pamiętam. Cóż, celem gry jest dowiedzieć się, gdzie na planszy o rozmiarach M×N są ustawione miny. Aby Ci pomóc, gra pokazuje liczbę min w sąsiedztwie każdego prawidłowo odsłoniętego pola. Na przykład załóżmy, że na planszy 4×4 są ustawione 2 miny (reprezentowane przez znak *):
*...
....
.*..
....
Gdy tę samą planszę uzupełnimy liczbami w sposób opisany wyżej, otrzymamy:
*100
2210
1*10
1110
Jak pewnie już zauważyliście, każde pole może mieć w sąsiedztwie najwyżej 8 min.
Wejście
Wejście będzie składać się z dowolnej liczby testów. Pierwszy wiersz każdego testu zawiera dwie liczby całkowite n oraz m (0 < n, m <= 100), które oznaczają odpowiednio liczbę wierszy i kolumn. Następne n wierszy zawiera dokładnie po m znaków i stanowi opis planszy. Każdy bezpieczne pole jest reprezentowane przez znak "." (bez cudzysłowów), a każda mina jest reprezentowana przez znak "*" (również bez cudzysłowu). Test w którym n = m = 0 oznacza koniec wejścia i nie powinien być przetwarzany.
Wyjście
Dla każdego testu, należy wydrukować następujący komunikat:
Field #x:
Gdzie X oznacza numer testu (poczynając od 1). Następne n wierszy powinno zawierać opis planszy, przy czym znaki "." są zastąpione liczbą znajdujących się w sąsiedztwie min. Między kolejnymi testami trzeba wydrukować pusty wiersz.
Przykładowe wejście
Przykładowe wyjście
Czy kiedykolwiek grałeś w Sapera? To taka mała, przyjemna gierka dostarczana z systemami operacyjnymi, których nazw niestety nie pamiętam. Cóż, celem gry jest dowiedzieć się, gdzie na planszy o rozmiarach M×N są ustawione miny. Aby Ci pomóc, gra pokazuje liczbę min w sąsiedztwie każdego prawidłowo odsłoniętego pola. Na przykład załóżmy, że na planszy 4×4 są ustawione 2 miny (reprezentowane przez znak *):
*...
....
.*..
....
Gdy tę samą planszę uzupełnimy liczbami w sposób opisany wyżej, otrzymamy:
*100
2210
1*10
1110
Jak pewnie już zauważyliście, każde pole może mieć w sąsiedztwie najwyżej 8 min.
Wejście
Wejście będzie składać się z dowolnej liczby testów. Pierwszy wiersz każdego testu zawiera dwie liczby całkowite n oraz m (0 < n, m <= 100), które oznaczają odpowiednio liczbę wierszy i kolumn. Następne n wierszy zawiera dokładnie po m znaków i stanowi opis planszy. Każdy bezpieczne pole jest reprezentowane przez znak "." (bez cudzysłowów), a każda mina jest reprezentowana przez znak "*" (również bez cudzysłowu). Test w którym n = m = 0 oznacza koniec wejścia i nie powinien być przetwarzany.
Wyjście
Dla każdego testu, należy wydrukować następujący komunikat:
Field #x:
Gdzie X oznacza numer testu (poczynając od 1). Następne n wierszy powinno zawierać opis planszy, przy czym znaki "." są zastąpione liczbą znajdujących się w sąsiedztwie min. Między kolejnymi testami trzeba wydrukować pusty wiersz.
Przykładowe wejście
4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0
Przykładowe wyjście
Field #1:
*100
2210
1*10
1110
Field #2:
**100
33200
1*100