Matthew lubi rozwiązywać zagadki. Ilekroć uda mu się go rozwiązać, skacze z radością. Ostatnio naprawdę musi to zrobić, ponieważ deszcz meteorów otworzył kratery i dziury w ziemi, na które nie chciałby spaść.
Dostajesz część krajobrazu, którą Matthew chce przejść, miejmy nadzieję, że na końcu dotrze zdrowy. Grunt podany jest w metrach, przy czym każdy metr jest albo normalnym gruntem, albo otworem. Kiedy biega, udaje mu się przekroczyć metr na krok; alternatywą jest skakanie, które przekracza cztery metry na krok. Matthew zaczyna od skrajnie lewej na pierwszym metrze naziemnym i chce dotrzeć do ostatniego (jednak nie poza nim - wyobraź sobie niekończącą się dziurę poza ostatnim metrem podanym w krajobrazie).
Wejście
Wejście jest podawane jako pojedynczy wiersz na standardowym wejściu, zakończone przerwaniem linii. Linia składa się z myślników ( -
) lub znaków podkreślenia ( _
), reprezentujących odpowiednio miernik gruntu lub otworu. Przykładowe dane wejściowe mogą być:
----__--___---
Dany krajobraz ma co najmniej jeden i co najwyżej 30 metrów długości i zawsze zaczyna się od ziemi.
Wynik
Dane wyjściowe są podawane na standardowe wyjście i reprezentują szereg poleceń ruchu dla Matthew, albo run ( R
), albo jump ( J
). Jak wspomniano powyżej,
polecenie uruchomienia powoduje, że Matthew biegnie o jeden metr, a skakanie prowadzi go dokładnie cztery metry do przodu. W powyższym przykładzie możliwy jest następujący ruch:
RRJRJRR
który wygląda mniej więcej w następujący sposób:
Jeśli nie ma bezpiecznej ścieżki przez krajobraz, !
należy wydrukować pojedynczy wykrzyknik ( ).
Przykładowe dane wejściowe
--------
----__--___---
-_______
-_-_-_-_-_-
-
Przykładowe wyniki
JRRR
RRJRJRR
!
!
(ostatni wynik jest pusty, ponieważ ruch nie jest konieczny, ale myślę, że Markdown nie może tego przeanalizować)
Uwaga
Konieczna jest tylko jedna możliwa ścieżka, więc wyjście programu nie musi dokładnie odpowiadać wyjściowym próbkom. Tak długo, jak podano rozwiązanie, jeśli istnieje, a każde polecenie ruchu przesuwa się na ziemię i ostatecznie osiągnięty jest ostatni metr, wyjście jest prawidłowe.
Dodatkowe dane wyjściowe dotyczące błędu standardowego są ignorowane.
Warunki wygranej
Wygrywa najkrótszy kod, jak to zwykle jest w golfie. W przypadku remisu wygrywa wcześniejsze rozwiązanie.
Przypadki testowe
Istnieją dwa skrypty testowe, zawierające identyczne przypadki testowe:
- bash (Dzięki Ventero )
- PowerShell
Wywołanie jest w obu przypadkach: <test script> <my program> [arguments]
np . ./test ruby jumprun.rb
Lub ./test.ps1 ./jumprun.exe
.
Kolejna uwaga
To zadanie było częścią konkursu golfowego, który odbył się na mojej uczelni w latach 2011-W24. Wyniki i języki naszych zawodników były następujące:
- 104 - Haskell
- 131 - Haskell
- 154 - C
- 170 - C
- 275 - VB.NET
- 286 - Common Lisp
Nasze własne rozwiązania były
- 92 - Rubinowy
- 124 - PowerShell
./test.sh perl jump.pl
-./test.sh: line 42: syntax error near unexpected token 'done'
, w ramach bash 3.2.48