Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

AL_26_13 - Saper

Saper


Gra saper

Sprawdź, czy istnieje takie pole diagramu, z którego rozpoczynając, można doprowadzić grę do szczęśliwego jej zakończenia wyłącznie przy pomocy dedukcji.

Twoim zadaniem jest przeprowadzić symulację gry i odpowiedzieć na pytanie postawione wyżej. Na wejściu jako pojedynczy przypadek testowy otrzymasz prostokątny diagram o wymiarach n × m opisany za pomocą dwóch znaków. Znak kropki oznacza wolne pole, a znak x, to pole minowe. Podany diagram służyć ma jako mapa terenu. Program powinien wczytać ją, wyznaczyć pola liczbowe oraz obszary wolne od liczb i trzymać tak zmodyfikowaną mapę w pamięci. Następnie należy sprawdzić, czy startując z pewnego pola diagramu nie należącego do miny, za pomocą dedukcji, można odkryć wszystkie pola nie będące minami.

Wejście
W pierwszym wierszu wejścia znajduje się liczba całkowita d (1 ≤ d ≤ 100) oznaczająca liczbę przypadków testowych. Każdy przypadek opisują w pierwszym wierszu trzy liczby całkowite n, m, k (2 ≤ n ≤ 16, 2 ≤ m ≤ 30, 1 ≤ k < n × m) oznaczające kolejno liczbę wierszy i liczbę kolumn diagramu oraz liczbę min. Dalej znajduje się n wierszy, każdy po m znaków, przedstawiające diagram sapera.

Wyjście
Dla każdego przypadku testowego należy wypisać TAK albo NIE jako odpowiedź na postawione pytanie.

Przykład

Wejście
3
3 3 3
...
.xx
.x.
5 5 4
....x
x....
....x
....x
.....
4 7 4
.......
xx...xx
.......
.......

Wyjście
TAK
NIE
TAK

 

Analiza drugiego przypadku testowego.

5 5 4
....x
x....
....x
....x
.....

Mapa:
11 1x
x1 22
11 2x
   2x
   11

Rozpoczynamy od pustego diagramu.
.....
.....
.....
.....
.....

Jeśli rozpoczniemy np. z pola (1,3) to na podstawie mapy otrzymamy:
.1 1.
.1 2.
11 2.
   2.
   1.

Na lewej bandzie mamy prostą sytuację, z której wnioskujemy, że pole (2,1)
to mina, a pole (1,1) jest wolne. Modyfikujemy diagram zaznaczając minę i
odkrywając pole wolne. Otrzymujemy:
11 1.
x1 2.
11 2.
   2.
   1.

Po prawej stronie diagramu sytuacja jest bardziej złożona. Po poprawnie
przeprowadzonym rozumowaniu możemy być pewni, że pole (3,5) to pole minowe.
Oznaczamy je i otrzymujemy:
11 1.
x1 2.
11 2x
   2.
   1.

Pozostały cztery pola do odkrycia, wśród których są dwie miny. Mamy tu dwie
kombinacje, ale nie dają nam one pewności odkrycia pola nie będącego miną.
Rozpoczynając od nowa z dowolnego innego pola dotrzemy co najwyżej do ostatnio
przedstawionej sytuacji, która nie gwarantuje nam bezpiecznego ukończenia gry.
Odpowiedzą dla tego diagramu jest zatem NIE.

Dodane przez:Mariusz Śliwiński
Data dodania:2015-12-23
Limit czasu wykonania programu:1s-5s
Limit długości kodu źródłowego50000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:All except: ASM64 GOSU JS-MONKEY

ukryj komentarze
2015-12-27 18:56:34 Mariusz ¦liwiñski
Ok, zrobiłem raz jeszcze rejudge, z poprawionym wejściem. Przepraszam za niedopatrzenie i gratuluję rozwiązania tego niełatwego zadania :)
2015-12-27 18:36:49 Mateusz Radecki
W sumie przypadki testowe są ok, ale mam nieodparte wrażenie, że liczba na górze to 35, a jest ich 37 :/
2015-12-27 18:03:15 Mateusz Radecki
No możesz to zrobić, ale tylko przypominam, że jeśli np. czegoś nie czyszczę to dostanę test na którym czegoś nie czyszczę. ---------------------------

Ostatnio edytowany: 2015-12-27 18:11:04
2015-12-27 17:54:37 Mariusz ¦liwiñski
Jest ok, jeśli chcesz to podeśle Ci ostatni plik, sprawdzisz.

Chodzi o to, że jak zamieniam miejscami niektóre przypadki testowe, to wyniki się nie zgadzają, ale u mnie jest to samo. Ale sprawdzanie pojedynczych przypapdków jest już ok, więc chyba któryś przypadek testowy musi to być jakiś trefny, ale assert mi nic nie wyrzuca.

Sprawdzisz swoim okiem?
2015-12-27 17:36:48 Mateusz Radecki
Bo wiesz, jeśli jednak jest źle, to spoko, przyjmę to, ale jednak wtedy chciałbym mieć trochę czasu na naprawienie :P
2015-12-27 16:58:15 Mariusz ¦liwiñski
Zrobione, ale jeszcze sprawdzę ten ostatni test, bo coś mi tam u Ciebie nie pasuje :/
2015-12-27 16:42:26 Mateusz Radecki
Jeśli stan rzeczy zostanie taki jaki jest, to jednak prosiłbym o jakiegoś rejudga, bo submity wysłane o 1 w nocy chyba też powinny być ok, a nie widzę rankingu i nie wiem czy te kilkanaście godzin może być przydatne.
2015-12-27 15:49:50 Mateusz Radecki
Hmmmmm, to daj znać jak najwcześniej, czy test był jakoś niepoprawny, czy ja jednak mam źle i muszę poprawić. Niepoprawność czyli np. gdzieś tu w kometarzach był test, gdzie była spacja zamiast kropki, więc przy wczyytywaniu jeden wiersz jest rozbity na dwa.
2015-12-27 15:43:17 Bartek
Już wiem do kogo :p

Ostatnio edytowany: 2015-12-27 15:44:03
2015-12-27 15:41:29 Mariusz ¦liwiñski
Jest jakiś problem z ostatnim testem, Pojedyncze przypadki poprawnie wypisujesz, ale ciąg odpowiedzi już niekoniecznie.
Póki co wyłączyłem ten test, Sprawdzę go jeszcze później.
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.