Il puzzle:
Prendi in considerazione una console / un gioco portatile con un d-pad in cui ti viene richiesto di inserire un nome. Questo è apparso in molti vecchi giochi prima che l'uso di QWERTY fosse reso popolare nelle console (ad esempio, credo che Wii utilizzi un layout di tastiera QWERTY per l'input). In genere, la tastiera su schermo osserva l'effetto di *:
Predefinito:
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 il caso acceso:
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 - + ^ =
Cioè, tutte le chiavi alfanumeriche e le seguenti:
_: Un singolo spazio
-: un trattino
+: cambia maiuscole e minuscole solo per la lettera successiva
^: attiva il blocco maiuscole (ovvero cambia maiuscole e minuscole)
=: inserisci, completa
* Ovviamente ho sostituito chiavi come "BKSP" e "ENTER" con versioni più brevi
E poi l'hardware dovrebbe includere un d-pad (o una qualche forma di controllo in cui si poteva andare up, down, lefte right)
Lo schermo in genere consente anche di spostarsi da un lato direttamente all'altro. Cioè, se tu fossi concentrato sulla lettera J, premendo rightti permetterebbe di passare alla lettera A.
Ogni volta che inserivo il mio nome, provavo sempre a trovare il modo più rapido per farlo.
Obbiettivo:
Il tuo programma prenderà l'input di stringa che può includere qualsiasi carattere alfanumerico incluso uno spazio e un trattino, e il tuo obiettivo è quello di produrre il minor numero di pressioni di tasti sul tasto direzionale per produrre la stringa richiesta.
considerazioni:
Non è necessario includere il tasto premuto per premere il carattere reale.
La messa a fuoco inizia sempre A
all'Invio =deve essere premuto alla fine
Esempio:
input: Code Golf
output: 43
Spiegato:
A -> C= 2
C-> ^= 6 (spostandosi a sinistra)
^-> 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
Nota che è più veloce colpire +due volte per a _e a Gche colpire ^una volta, quindi scambia indietro.
L'invio vincente (consentirò almeno 1w) sarà la soluzione più breve (in byte). Dato che questa è la mia prima domanda, spero che sia chiaro e non troppo difficile.