A Matthew piace risolvere enigmi. Ogni volta che riesce a risolverne uno, salta felicemente. Di recente ha davvero bisogno di fare questo perché una pioggia di meteoriti ha aperto crateri e buchi nel terreno in cui non vorrebbe cadere.
Ti viene data una parte del paesaggio che Matthew vuole attraversare, sperando di arrivare sano alla fine. Il terreno è dato in metri, con ogni metro che è o terreno normale o un buco. Quando corre riesce a attraversare un metro per passo; l'alternativa è saltare che attraversa quattro metri per passo. Matthew inizia all'estrema sinistra del primo metro di terra e vuole arrivare all'ultimo (non oltre, però - immagina solo un buco infinito oltre l'ultimo metro dato nel paesaggio).
Ingresso
L'input viene dato come una riga singola sull'input standard, terminato da un'interruzione di riga. La linea è composta da trattini ( -) o caratteri di sottolineatura ( _), che rappresentano rispettivamente un metro da terra o da foro. Un input di esempio potrebbe essere:
----__--___---
Il paesaggio dato è lungo almeno uno e al massimo 30 metri e inizia sempre con il terreno.
Produzione
L'output viene fornito sull'output standard e rappresenta una serie di comandi di movimento per Matthew, run ( R) o jump ( J). Come notato sopra, un
comando di corsa fa correre Matthew per un metro mentre il salto lo porta avanti esattamente di quattro metri. Per l'esempio sopra riportato è possibile il seguente movimento:
RRJRJRR
che appare approssimativamente come segue:

Se non esiste un percorso sicuro attraverso il paesaggio, è !necessario stampare un punto esclamativo ( ).
Ingressi campione
--------
----__--___---
-_______
-_-_-_-_-_-
-
Output di esempio
JRRR
RRJRJRR
!
!
(l'ultimo output è vuoto in quanto non è necessario alcun movimento, ma immagino, Markdown non può analizzarlo)
Nota
È necessario un solo percorso possibile, quindi l'output del programma non deve conformarsi esattamente agli output di esempio. Finché viene fornita una soluzione se esiste e ogni comando di movimento si sposta a terra e viene raggiunto l'ultimo metro, l'uscita è valida.
L'output aggiuntivo in caso di errore standard viene ignorato.
Condizioni vincenti
Vince il codice più corto, come è consuetudine nel golf. In caso di pareggio, vince la soluzione precedente.
Casi test
Esistono due script di test, contenenti casi di test identici:
- bash (Grazie a Ventero )
- PowerShell
L'invocazione è in entrambi i casi: <test script> <my program> [arguments]ad es. ./test ruby jumprun.rbO./test.ps1 ./jumprun.exe .
Un'altra nota
Questo compito faceva parte di una gara di golf tenutasi nella mia università durante il 2011-W24. I punteggi e le lingue dei nostri concorrenti erano i seguenti:
- 104 - Haskell
- 131 - Haskell
- 154 - C
- 170 - C
- 275 - VB.NET
- 286 - Lisp comune
Le nostre soluzioni erano
- 92 - Ruby
- 124 - PowerShell
./test.sh perl jump.pl-./test.sh: line 42: syntax error near unexpected token 'done', in bash 3.2.48