Matthew löst gerne Rätsel. Wann immer er es schafft, einen zu lösen, springt er glücklich herum. Kürzlich er wirklich braucht , dies zu tun , wie ein Meteorschauer Krater und Löcher im Boden geöffnet hat , in dem ihm wie nicht fallen.
Sie erhalten einen Teil der Landschaft, den Matthew überqueren möchte, und kommen hoffentlich am Ende gesund an. Der Boden wird in Metern angegeben, wobei jeder Meter entweder normaler Boden oder ein Loch ist. Wenn er läuft, schafft er es, einen Meter pro Schritt zu überqueren; Die Alternative ist das Springen, das vier Meter pro Schritt überquert. Matthew beginnt ganz links auf dem ersten Grundmeter und möchte zum letzten gelangen (allerdings nicht darüber hinaus - stellen Sie sich ein endloses Loch jenseits des letzten angegebenen Meters in der Landschaft vor).
Eingang
Die Eingabe erfolgt als einzelne Zeile in der Standardeingabe, die durch einen Zeilenumbruch abgeschlossen wird. Die Linie besteht entweder aus Bindestrichen ( -) oder Unterstrichen ( _), die eine Boden- bzw. Lochanzeige darstellen. Eine Beispieleingabe könnte sein:
----__--___---
Die gegebene Landschaft ist mindestens eine und höchstens 30 Meter lang und beginnt immer mit dem Boden.
Ausgabe
Die Ausgabe erfolgt als Standardausgabe und stellt eine Reihe von Bewegungsbefehlen für Matthew dar, entweder run ( R) oder jump ( J). Wie oben erwähnt, ein
Lauf verursacht Befehl Matthew einen Meter zu laufen , während Springen ihn nach vorne genau vier Meter trägt. Für das obige Beispiel ist folgende Bewegung möglich:
RRJRJRR
was ungefähr so aussieht:

Wenn es keinen sicheren Weg durch die Landschaft gibt, sollte ein einzelnes Ausrufezeichen ( !) gedruckt werden.
Beispieleingaben
--------
----__--___---
-_______
-_-_-_-_-_-
-
Beispielausgaben
JRRR
RRJRJRR
!
!
(Die letzte Ausgabe ist leer, da keine Bewegung erforderlich ist, aber ich denke, Markdown kann dies nicht analysieren.)
Hinweis
Es ist nur ein einziger möglicher Pfad erforderlich, sodass die Programmausgabe nicht genau mit den Beispielausgaben übereinstimmen muss. Solange eine Lösung vorliegt und jeder Bewegungsbefehl auf den Boden fährt und der letzte Zähler irgendwann erreicht ist, ist die Ausgabe gültig.
Zusätzliche Ausgabe bei Standardfehler wird ignoriert.
Gewinnbedingung
Der kürzeste Code gewinnt, wie es im Golf üblich ist. Bei einem Gleichstand gewinnt die frühere Lösung.
Testfälle
Es gibt zwei Testskripte mit identischen Testfällen:
- bash (Danke an Ventero )
- Power Shell
Der Aufruf erfolgt in beiden Fällen: <test script> <my program> [arguments]zB ./test ruby jumprun.rboder ./test.ps1 ./jumprun.exe.
Noch ein Hinweis
Diese Aufgabe war Teil eines Golfwettbewerbs an meiner Universität im Zeitraum 2011-24. Die Partituren und Sprachen unserer Teilnehmer waren wie folgt:
- 104 - Haskell
- 131 - Haskell
- 154 - C
- 170 - C
- 275 - VB.NET
- 286 - Gemeines Lisp
Unsere eigenen Lösungen waren
- 92 - Rubin
- 124 - PowerShell
./test.sh perl jump.pl-./test.sh: line 42: syntax error near unexpected token 'done', under bash 3.2.48