Zagadka:
Rozważ grę konsolową / ręczną z padem kierunkowym, w której musisz podać nazwę. Pojawiało się to w wielu starszych grach, zanim użycie QWERTY zostało spopularyzowane w konsolach (np. Wierzę, że Wii używa układu klawiatury QWERTY do wprowadzania danych). Zazwyczaj klawiatura ekranowa wygląda na *:
Domyślna:
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 _ + ^ =
Po zmianie obudowy:
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 - + ^ =
Oznacza to, że wszystkie klawisze alfanumeryczne i następujące:
_: Pojedyncza spacja
-: Łącznik
+:
^Zmień wielkość liter tylko na następną literę : Przełącz blokadę wielkich liter (to znaczy, zmieniaj wielkość liter wszystkich liter)
=: Wprowadź, zakończ
* Oczywiście klucze takie jak „BKSP” i „ENTER” zastąpiłem krótszymi wersjami
A następnie sprzęt obejmowałyby D-pad (lub jakąś formę kontroli, gdzie można pójść up, down, lefti right)
Ekran zazwyczaj pozwala także na przechodzenie z jednej strony bezpośrednio na drugą. Oznacza to, że jeśli skupiłeś się na liście J, naciśnięcie rightumożliwi przejście do litery A.
Ilekroć wpisałem swoje imię, zawsze starałem się znaleźć najszybszy sposób, aby to zrobić.
Cel:
Twój program pobierze ciąg znaków, który może zawierać dowolny znak alfanumeryczny, w tym spację i łącznik, a Twoim celem jest wygenerowanie jak najmniejszej liczby naciśnięć klawiszy na klawiaturze kierunkowej, aby uzyskać wymagany ciąg znaków.
Uwagi:
Nie trzeba dołączać klawisza do naciśnięcia rzeczywistego znaku.
Fokus zawsze zaczyna się na A
Enter, =należy nacisnąć na końcu
Przykład:
input: Code Golf
output: 43
Wyjaśnienie:
A -> C= 2
C-> ^= 6 (przejście w lewo)
^-> 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
Zauważ, że szybciej jest trafić +dwa razy dla a _i Gniż trafić ^raz, a następnie zamienić z powrotem.
Zwycięskie zgłoszenie (pozwolę co najmniej 1 w) będzie najkrótszym rozwiązaniem (w bajtach). Ponieważ jest to moje pierwsze pytanie, mam nadzieję, że jest to jasne i niezbyt trudne.