Muchos juegos antiguos de Game Boy a menudo requerían una entrada de cadena del usuario. Sin embargo, no había teclado. Esto se manejó presentando al usuario una "pantalla de teclado" como esta:
El 'puntero del carácter' comenzaría en letra A. El usuario navegar a cada carácter deseado con el D-Pad 's cuatro botones ( UP
, DOWN
, LEFT
y RIGHT
), a continuación, pulse BUTTON A
para anexar a la cadena final.
Tenga en cuenta:
- La cuadrícula se enrolla , por lo que presionar
UP
mientras está en la letra A lo llevaría a T. - El 'puntero de caracteres' permanece fijo después de agregar una letra
El reto
El teclado anterior tiene opciones para cambiar mayúsculas y minúsculas y tiene una forma irregular. Entonces, por simplicidad, en este desafío usaremos el siguiente teclado (la parte inferior derecha es ASCII char 32, un espacio):
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 .
Escribir en teclados como este es extremadamente lento, por lo tanto, para facilitar esto, su tarea es escribir un programa que le diga al usuario la forma más rápida posible de escribir una cadena dada. Si hay varias formas más rápidas, solo necesita mostrar una.
La clave de salida debe ser:
>
paraRIGHT
<
paraLEFT
^
paraUP
v
paraDOWN
.
paraBUTTON A
(agregar la letra actual a la cadena)
Por ejemplo, cuando se le da la cadena DENNIS
, la solución se vería así:
>>>.>.>>v..>>.>>>v.
Reglas / Detalles
- Por favor, recuerde, la cuadrícula se envuelve!
- Puede enviar un programa completo o una función, siempre que tome la cadena inicial y produzca una cadena de solución. Los espacios en blanco / las nuevas líneas finales son irrelevantes siempre que la salida sea correcta.
- Puede suponer que la entrada solo consistirá en caracteres que se pueden escribir en el teclado especificado, pero puede estar vacío.
- Este es el código de golf , por lo que gana el código más corto. Se aplican las lagunas de código estándar de golf.
Casos de prueba
Por lo general, hay múltiples soluciones de la misma longitud. Para cada caso de prueba, he incluido la longitud óptima y un ejemplo. No necesita imprimir la longitud en su respuesta, solo la solución.
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)
Puede ver mi generador de casos de prueba en repl.it ; notifíqueme si hay algún error.
¡Gracias a todos por las presentaciones! El usuario ngn es actualmente el ganador con 61 bytes, pero si alguien puede encontrar una solución más corta, se puede mover la pequeña marca verde;)