A Matthew le gusta resolver acertijos. Cada vez que logra resolver uno, salta felizmente. Recientemente, realmente necesita hacer esto, ya que una lluvia de meteoritos ha abierto cráteres y agujeros en el suelo en los que no le gustaría caer.
Te dan una parte del paisaje que Matthew quiere cruzar, con suerte llegando sano al final. El terreno se da en metros, y cada metro es terreno normal o un hoyo. Cuando está corriendo, logra cruzar un metro por paso; La alternativa es saltar, que cruza cuatro metros por paso. Matthew comienza en el extremo izquierdo en el primer metro de tierra y quiere llegar al último (no más allá, sin embargo, solo imagine un agujero sin fin más allá del último metro dado en el paisaje).
Entrada
La entrada se da como una sola línea en la entrada estándar, terminada por un salto de línea. La línea consta de guiones ( -
) o guiones bajos ( _
), que representan un medidor de suelo o de agujero, respectivamente. Una entrada de muestra podría ser:
----__--___---
El paisaje dado es al menos uno y como máximo 30 metros de largo y siempre comienza con el suelo.
Salida
La salida se da en la salida estándar y representa una serie de comandos de movimiento para Matthew, ya sea run ( R
) o jump ( J
). Como se señaló anteriormente, un
comando de carrera hace que Matthew corra un metro mientras que el salto lo lleva exactamente cuatro metros hacia adelante. Para el ejemplo dado anteriormente, es posible el siguiente movimiento:
RRJRJRR
que se ve aproximadamente de la siguiente manera:
Si no hay un camino seguro a través del paisaje, se !
debe imprimir un solo signo de exclamación ( ).
Entradas de muestra
--------
----__--___---
-_______
-_-_-_-_-_-
-
Resultados de muestra
JRRR
RRJRJRR
!
!
(la última salida está en blanco ya que no es necesario ningún movimiento, pero supongo que Markdown no puede analizar esto)
Nota
Solo es necesaria una única ruta posible, por lo que la salida del programa no tiene que ajustarse exactamente a las salidas de muestra. Mientras exista una solución si existe y cada comando de movimiento se mueve al suelo y se alcanza el último medidor, la salida es válida.
Se ignora la salida adicional en el error estándar.
Condición ganadora
El código más corto gana, como es habitual en el golf. En caso de empate, la solución anterior gana.
Casos de prueba
Hay dos scripts de prueba que contienen casos de prueba idénticos:
- bash (Gracias a Ventero )
- Potencia Shell
La invocación es en ambos casos: <test script> <my program> [arguments]
por ejemplo, ./test ruby jumprun.rb
o ./test.ps1 ./jumprun.exe
.
Otra nota
Esta tarea fue parte de un concurso de golf celebrado en mi universidad durante 2011-W24. Los puntajes e idiomas de nuestros concursantes fueron los siguientes:
- 104 - Haskell
- 131 - Haskell
- 154 - C
- 170 - C
- 275 - VB.NET
- 286 - Lisp común
Nuestras propias soluciones fueron
- 92 - Ruby
- 124 - PowerShell
./test.sh perl jump.pl
-./test.sh: line 42: syntax error near unexpected token 'done'
, bajo bash 3.2.48