In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
Popularna gra w węża polega na wędrówce tego gada po dwuwymiarowej planszy w sposób pozwalający na zjedzenie maksymalnej liczby jabłek rozmieszczonych na polach tej planszy, tak jednak, aby głowa węża nie uderzyła w ścianę (czyli brzeg planszy) ani w ciało węża. Dodatkowym utrudnieniem jest fakt, że z każdym kolejno zjedzonym jabłkiem ciało węża wydłuża się.
Bajtek pisze właśnie własną wersję tej wspaniałej gry i potrzebuje Twojej pomocy. Potrzebny jest mu program, który dla danego przebiegu gry stwierdzi, w którym momencie gra zostaje zakończona, czyli w którym ruchu głowa węża uderzy w jego ciało bądź w ścianę.
Na początku wąż ma długość 1 (więc zajmuje tylko jedno pole planszy), jednak w momencie, gdy trafi na pole, na którym znajduje się jabłko, wydłuża się o 1.
Każdy ruch rozpoczyna się od przesunięcia głowy węża. Jeżeli nowa pozycja leży poza planszą lub jest zajmowana przez ciało węża, to gra zostaje zakończona. Jeżeli natomiast na nowej pozycji głowy znajduje się jabłko, to zostaje ono zjedzone (czyli znika z planszy) i ruch jest zakończony. W przeciwnym wypadku przesuwany jest również ogon węża, tak aby wąż miał nadal tę samą długość.
W pierwszym wierszu standardowego wejścia znajdują się trzy liczby całkowite oraz (, ) pooddzielane pojedynczymi odstępami, oznaczające odpowiednio liczbę wierszy i kolumn planszy oraz liczbę wykonanych ruchów.
W drugim wierszu znajduje się jedna litera określająca kierunek, w którym wąż rozpoczyna swoją wędrówkę. Litera N oznacza kierunek północny, litera S - kierunek południowy, W - kierunek zachodni, zaś E - kierunek wschodni (patrz rysunek).
W następnych wierszach znajduje się opis planszy. W -tym z tych wierszy znajduje się znaków określających kolejne pola -tego wiersza planszy. Kropka (.) oznacza puste pole, litera W - początkową pozycję węża, zaś litera J - pole, na którym leży jabłko. Możesz założyć, że na planszy znajduje się dokładnie jedno pole oznaczone jako W.
W ostatnim wierszu znajduje się liter pooddzielanych pojedynczymi odstępami, reprezentujących kolejne ruchy węża. Litera N oznacza ruch naprzód, litera L oznacza skręt w lewo i przejście jednego pola naprzód, natomiast litera P oznacza skręt w prawo i przejście jednego pola naprzód.
Możliwe początkowe kierunki ruchu węża.
Jeżeli w żadnym z ruchów wąż nie uderzy ani w swoje ciało, ani w brzeg planszy, to Twój program powinien wypisać na standardowe wyjście jedno słowo "OK" (bez cudzysłowów). W przeciwnym przypadku Twój program powinien wypisać na standardowe wyjście jedną liczbę całkowitą równą numerowi ruchu, który zakończy się uderzeniem głową węża w jego ciało lub w brzeg planszy (ruchy numerujemy od 1).
Dla danych wejściowych:
3 5 8 E ..... W.JJ. ..JJ. N N N P P P N N
poprawną odpowiedzią jest:
6
Przykład 1: wąż zjada 4 jabłka i uderza w swoje ciało w szóstym ruchu.
Przerywana linia oznacza trasę przebytą przez węża.
natomiast dla danych wejściowych:
3 5 5 N ..... W..J. ..J.. P P L N N
poprawnym wynikiem jest:
OK
Przykład 2: wąż zjada jedno jabłko i kończy, nie
uderzywszy ani w ścianę, ani w swoje ciało.
Przerywana linia oznacza trasę przebytą przez węża.
Autor zadania: Marian M. Kędzierski.