Muitos jogos antigos do Game Boy frequentemente exigiam a entrada de strings do usuário. No entanto, não havia teclado. Isso foi tratado ao apresentar ao usuário uma "tela do teclado" da seguinte forma:
O 'ponteiro caráter' iria começar na letra A. O usuário navegar para cada caractere desejado com o D-Pad 's quatro botões ( UP
, DOWN
, LEFT
e RIGHT
) e pressione BUTTON A
para anexá-lo para a cadeia final.
Observe:
- A grade se quebra , pressionando
UP
a letra A o levaria até T. - O 'ponteiro de caractere' permanece colocado após o anexo de uma letra
O desafio
O teclado acima tem opções para mudar de maiúsculas e minúsculas e tem uma forma irregular. Portanto, para simplificar, neste desafio, usaremos o seguinte teclado (o canto inferior direito é ASCII char 32, um espaço):
A B C D E F G
H I J K L M N
O P Q R S T U
V W X Y Z .
Digitar em teclados como esse é extremamente lento - portanto, para facilitar isso, sua tarefa é escrever um programa que informe ao usuário a maneira mais rápida possível de digitar uma determinada string. Se houver várias maneiras mais rápidas, você só precisará mostrar uma.
A chave de saída deve ser:
>
paraRIGHT
<
paraLEFT
^
paraUP
v
paraDOWN
.
forBUTTON A
(acrescente a letra atual à string)
Por exemplo, quando recebida a string DENNIS
, a solução seria assim:
>>>.>.>>v..>>.>>>v.
Regras / Detalhes
- Por favor, lembre-se, a grade envolve!
- Você pode enviar um programa completo ou uma função, desde que ela pegue a cadeia inicial e produza uma cadeia de solução. As novas linhas de espaço em branco / à direita são irrelevantes desde que a saída esteja correta.
- Você pode assumir que a entrada será composta apenas por caracteres digitáveis no teclado especificado, mas pode estar vazia.
- Isso é código-golfe , então o código mais curto vence. Aplicam-se lacunas de código-golfe padrão.
Casos de teste
Geralmente existem várias soluções do mesmo comprimento. Para cada caso de teste, incluí o comprimento ideal e um exemplo. Você não precisa imprimir o comprimento da sua resposta, apenas a solução.
FLP.TKC -> 25 steps: <<.<v.<<<v.<<<v.^.<<^.<^.
MOYLEX -> 23 steps: <<v.>>v.>>>v.>^^.^.<<^.
FEERSUM -> 18 steps: <<.<..<vv.>.>>.<^.
MEGO -> 14 steps: <<v.<^.>>.>vv.
A CAT -> 17 steps: .<^.>>>v.<<.<<vv.
BOB -> 10 steps: >.<vv.>^^.
(space) -> 3 steps: <^.
(empty) -> 0 steps: (empty)
Você pode ver meu gerador de caixa de teste em repl.it - notifique-me se houver algum erro.
Obrigado a todos pelos envios! Atualmente, o usuário ngn é o vencedor com 61 bytes, mas se alguém encontrar uma solução mais curta, o pequeno tique verde pode ser movido;)