Matthew aime résoudre des énigmes. Chaque fois qu'il parvient à en résoudre un, il saute joyeusement. Récemment, il a vraiment besoin de le faire car une pluie de météores a ouvert des cratères et des trous dans le sol dans lesquels il ne voudrait pas tomber.
On vous donne une partie du paysage que Matthew veut traverser, en espérant arriver en bonne santé à la fin. Le sol est donné en mètres, chaque mètre étant soit un sol normal, soit un trou. Lorsqu'il court, il parvient à franchir un mètre par pas; l'alternative est le saut qui franchit quatre mètres par pas. Matthew commence à l'extrême gauche sur le premier mètre au sol et veut atteindre le dernier (pas au-delà, cependant - imaginez un trou sans fin au-delà du dernier mètre donné dans le paysage).
Contribution
L'entrée est donnée sous la forme d'une seule ligne sur l'entrée standard, terminée par un saut de ligne. La ligne se compose de tirets ( -
) ou de traits de soulignement ( _
), représentant respectivement un mètre au sol ou un trou. Un exemple d'entrée pourrait être:
----__--___---
Le paysage donné fait au moins un et au plus 30 mètres de long et commence toujours par le sol.
Production
La sortie est donnée sur la sortie standard et représente une série de commandes de mouvement pour Matthew, soit run ( R
) soit jump ( J
). Comme indiqué ci-dessus, une
commande de course oblige Matthew à courir un mètre tandis que le saut le fait avancer exactement de quatre mètres. Pour l'exemple donné ci-dessus, le mouvement suivant est possible:
RRJRJRR
qui ressemble approximativement à ce qui suit:
S'il n'y a pas de chemin sûr à travers le paysage, un seul point d'exclamation ( !
) doit être imprimé.
Exemples d'entrées
--------
----__--___---
-_______
-_-_-_-_-_-
-
Exemples de sorties
JRRR
RRJRJRR
!
!
(la dernière sortie est vide car aucun mouvement n'est nécessaire, mais je suppose que Markdown ne peut pas analyser cela)
Remarque
Un seul chemin possible est nécessaire, de sorte que la sortie du programme n'a pas à se conformer exactement aux sorties d'échantillons. Tant qu'une solution est donnée si elle existe et que chaque commande de mouvement se déplace vers le sol et que le dernier mètre est finalement atteint, la sortie est valide.
La sortie supplémentaire sur l'erreur standard est ignorée.
Condition gagnante
Le code le plus court gagne, comme c'est la coutume dans le golf. En cas d'égalité, la solution précédente l'emporte.
Cas de test
Il existe deux scripts de test, contenant des cas de test identiques:
- bash (Merci à Ventero )
- PowerShell
L'invocation est dans les deux cas:, <test script> <my program> [arguments]
par exemple ./test ruby jumprun.rb
ou ./test.ps1 ./jumprun.exe
.
Une autre note
Cette tâche faisait partie d'un concours de golf organisé dans mon université en 2011-S24. Les scores et les langues de nos candidats étaient les suivants:
- 104 - Haskell
- 131 - Haskell
- 154 - C
- 170 - C
- 275 - VB.NET
- 286 - Lisp commun
Nos propres solutions étaient
- 92 - Rubis
- 124 - PowerShell
./test.sh perl jump.pl
-./test.sh: line 42: syntax error near unexpected token 'done'
, sous bash 3.2.48