Molti vecchi giochi per Game Boy spesso richiedono l'immissione di stringhe da parte dell'utente. Tuttavia, non c'era la tastiera. Ciò è stato gestito presentando all'utente una "schermata della tastiera" in questo modo:
Il 'puntatore carattere' comincerebbe sulla lettera A. L'utente dovrebbe spostarsi su ogni carattere desiderato con il D-Pad s' quattro tasti ( UP
, DOWN
, LEFT
e RIGHT
), quindi premere BUTTON A
per aggiungere alla stringa finale.
Notare che:
- La griglia si avvolge , quindi premendo
UP
mentre sulla lettera A ti porteresti a T. - Il "puntatore di caratteri" rimane inserito dopo aver aggiunto una lettera
La sfida
La tastiera sopra ha opzioni per cambiare la custodia ed è di forma irregolare. Quindi, per semplicità, in questa sfida useremo la seguente tastiera (in basso a destra è il carattere ASCII 32, uno spazio):
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 .
Digitare su tastiere come questa è estremamente lento - quindi, per facilitare questa operazione, il tuo compito è scrivere un programma che dica all'utente il modo più veloce possibile di digitare una determinata stringa. Se ci sono più modi più veloci, devi solo mostrarne uno.
La chiave di output dovrebbe essere:
>
perRIGHT
<
perLEFT
^
perUP
v
perDOWN
.
perBUTTON A
(aggiungi la lettera corrente alla stringa)
Ad esempio, quando viene data la stringa DENNIS
, la soluzione dovrebbe apparire così:
>>>.>.>>v..>>.>>>v.
Regole / Dettagli
- Ricorda, la griglia si avvolge!
- È possibile inviare un programma completo o una funzione, purché richieda la stringa iniziale e produca una stringa di soluzione. Gli spazi vuoti / le nuove righe finali sono irrilevanti purché l'output sia corretto.
- Puoi supporre che l'input consisterà solo di caratteri digitabili sulla tastiera specificata, ma potrebbe essere vuoto.
- Questo è code-golf , quindi vince il codice più corto. Si applicano scappatoie standard per il golf da codice.
Casi test
Di solito ci sono più soluzioni della stessa lunghezza. Per ogni caso di test, ho incluso la lunghezza ottimale e un esempio. Non è necessario stampare la lunghezza nella risposta, solo la soluzione.
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)
Puoi vedere il mio generatore di testcase su repl.it - per favore avvisami se ci sono dei bug.
Grazie a tutti per le osservazioni! L'utente ngn è attualmente il vincitore con 61 byte, ma se qualcuno riesce a trovare una soluzione più breve, il piccolo segno di spunta verde può essere spostato;)