El rompecabezas:
Considere un juego de consola / de mano con un d-pad donde se le requiere ingresar un tipo de nombre. Esto apareció en muchos juegos anteriores antes de que el uso de QWERTY se popularizara en las consolas (por ejemplo, creo que la Wii usa un diseño de teclado QWERTY para la entrada). Por lo general, el teclado en pantalla tiene el efecto de *:
Defecto:
0 1 2 3 4 5 6 7 8 9
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 _ + ^ =
Con el caso cambiado:
0 1 2 3 4 5 6 7 8 9
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 - + ^ =
Es decir, todas las claves alfanuméricas y lo siguiente:
_: Un solo espacio
-: Un guión
+: Cambiar mayúsculas y minúsculas solo para la siguiente letra
^: Alternar bloqueo de mayúsculas (es decir, cambiar mayúsculas y minúsculas)
=: Entrar, completar
* Obviamente reemplacé teclas como "BKSP" y "ENTER" con versiones más cortas
Y luego el hardware incluiría un d-pad (o alguna forma de control donde se podía ir up, down, lefty right)
La pantalla también te permite moverte de un lado a otro directamente. Es decir, si se concentrara en la letra J, presionar rightle permitiría moverse a la letra A.
Cada vez que ingresaba mi nombre, siempre intentaba encontrar la forma más rápida de hacerlo.
Gol:
Su programa tomará una entrada de cadena que puede incluir cualquier carácter alfanumérico, incluido un espacio y un guión, y su objetivo es generar la menor cantidad de pulsaciones de teclas en el d-pad para generar la cadena requerida.
Consideraciones:
No necesita incluir la tecla presionada para presionar el carácter real.
El foco siempre comienza en A
Enter, =debe presionarse al final
Ejemplo:
input: Code Golf
output: 43
Explicado:
A -> C= 2
C-> ^= 6 (moviéndose hacia la izquierda)
^-> o= 5
o-> d= 2
d-> e= 1
e-> += 5
+-> _= 1
_-> += 1
+-> G= 3
G-> o= 3
o-> l= 3
l-> f= 5
f-> == 6
Tenga en cuenta que es más rápido presionar +dos veces para a _y a Gque presionar ^una vez, luego cambiar de nuevo.
La presentación ganadora (permitiré al menos 1w) será la solución más corta (en bytes). Como esta es mi primera pregunta, espero que sea clara y no demasiado difícil.