Das Puzzle:
Stellen Sie sich ein Konsolen- / Handspiel mit einem Steuerkreuz vor, bei dem Sie eine Art Namen eingeben müssen. Dies trat in vielen älteren Spielen auf, bevor die Verwendung von QWERTY in Konsolen populär wurde (z. B. verwendet die Wii meines Erachtens ein QWERTY-Tastaturlayout für die Eingabe). In der Regel sieht die Bildschirmtastatur wie folgt aus:
Standard:
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 _ + ^ =
Mit dem Fall geschaltet:
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 - + ^ =
Das heißt, alle alphanumerischen Tasten und die folgenden:
_: Ein einzelnes Leerzeichen
-: Ein Bindestrich
+: Groß- / Kleinschreibung nur für den nächsten Buchstaben
^umschalten: Feststelltaste umschalten (dh Groß- / Kleinschreibung aller Buchstaben umschalten)
=: Eingeben, abschließen
* Offensichtlich habe ich Tasten wie "BKSP" und "ENTER" durch kürzere Versionen ersetzt
Und dann würde die Hardware gehört ein D-Pad (oder irgendeine Form der Kontrolle , wohin Sie gehen könnten up, down, leftund right)
Auf dem Bildschirm können Sie in der Regel auch direkt von einer Seite zur anderen wechseln. Wenn Sie sich also auf den Buchstaben konzentrieren J, können Sie durch Drücken rightvon zum Buchstaben wechseln A.
Wann immer ich meinen Namen eingab, versuchte ich immer, den schnellsten Weg zu finden.
Tor:
Ihr Programm übernimmt die Eingabe von Zeichenfolgen, die beliebige alphanumerische Zeichen einschließlich Leerzeichen und Bindestrich enthalten können. Ihr Ziel ist es, die kürzeste Anzahl von Tastendrücken auf dem Steuerkreuz auszugeben, um die erforderliche Zeichenfolge auszugeben.
Überlegungen:
Sie müssen die gedrückte Taste nicht einschließen, um das tatsächliche Zeichen zu drücken .
Fokus beginnt immer bei der A
Enter Taste =muss am Ende gedrückt werden
Beispiel:
input: Code Golf
output: 43
Erklärt:
A -> C= 2
C-> ^= 6 (nach links bewegen)
^-> 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
Beachten Sie, dass es schneller ist, +zweimal für a _und a Gzu schlagen, als ^einmal, und dann zurück zu tauschen.
Die gewinnende Einsendung (ich erlaube mindestens 1 W) ist die kürzeste Lösung (in Bytes). Da dies meine erste Frage ist, hoffe ich, dass dies klar und nicht zu schwer ist.