Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
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łowego | 50000B |
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. |