Matthew gosta de resolver quebra-cabeças. Sempre que ele consegue resolver um, ele pula alegremente. Recentemente, ele realmente precisa fazer isso, pois uma chuva de meteoros abriu crateras e buracos no chão em que ele não gostaria de cair.
Você recebe uma parte da paisagem que Mateus deseja atravessar, com sorte chegando saudável no final. O solo é dado em metros, com cada metro sendo solo normal ou um buraco. Quando ele está correndo, ele consegue atravessar um metro por passo; a alternativa é pular, que atravessa quatro metros por passo. Matthew começa na extrema esquerda no primeiro medidor de solo e quer chegar ao último (embora não além dele - imagine um buraco sem fim além do último medidor indicado na paisagem).
Entrada
A entrada é fornecida como uma única linha na entrada padrão, terminada por uma quebra de linha. A linha consiste em traços ( -
) ou sublinhados ( _
), representando um medidor de solo ou furo, respectivamente. Uma entrada de amostra pode ser:
----__--___---
A paisagem dada é de pelo menos um e no máximo 30 metros de comprimento e sempre começa com o solo.
Resultado
A saída é fornecida na saída padrão e representa uma série de comandos de movimento para Matthew, run ( R
) ou jump ( J
). Como observado acima, um
comando de corrida faz com que Matthew corra um metro enquanto pula o leva adiante exatamente quatro metros. Para o exemplo acima, é possível o seguinte movimento:
RRJRJRR
que tem a seguinte aparência:
Se não houver caminho seguro na paisagem, um único ponto de exclamação ( !
) deve ser impresso.
Entradas de Amostra
--------
----__--___---
-_______
-_-_-_-_-_-
-
Saídas de amostra
JRRR
RRJRJRR
!
!
(a última saída está em branco, pois nenhum movimento é necessário, mas acho que o Markdown não pode analisar isso)
Nota
Somente um único caminho possível é necessário, portanto a saída do programa não precisa estar exatamente em conformidade com as saídas de amostra. Desde que seja fornecida uma solução, se existir, e todo comando de movimento se mover para o solo e o último medidor for atingido, o resultado será válido.
Saída adicional com erro padrão é ignorada.
Condição vencedora
O código mais curto vence, como é habitual no golfe. Em caso de empate, a solução anterior vence.
Casos de teste
Existem dois scripts de teste, contendo casos de teste idênticos:
- bash (Graças a Ventero )
- PowerShell
A invocação ocorre nos dois casos:, <test script> <my program> [arguments]
por exemplo, ./test ruby jumprun.rb
ou ./test.ps1 ./jumprun.exe
.
Outra nota
Esta tarefa fez parte de um concurso de golfe realizado na minha universidade durante o período 2011-W24. As pontuações e idiomas de nossos concorrentes foram os seguintes:
- 104 - Haskell
- 131 - Haskell
- 154 - C
- 170 - C
- 275 - VB.NET
- 286 - Lisp comum
Nossas próprias soluções foram
- 92 - Ruby
- 124 - PowerShell
./test.sh perl jump.pl
-./test.sh: line 42: syntax error near unexpected token 'done'
, sob o bash 3.2.48