Головоломка:
Розгляньте консольну / ручну гру з d-pad, де потрібно ввести назву сортів. Це з'явилося в багатьох старих іграх до того, як використання QWERTY популяризувалося в консолях (наприклад, я вважаю, що Wii використовує розкладку клавіатури QWERTY для введення). Зазвичай екранна клавіатура виглядає як *:
За замовчуванням:
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 _ + ^ =
Із включеним корпусом:
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 - + ^ =
Тобто всі буквено-цифрові клавіші та наступне:
_: Єдиний пробіл
-: Дефіс
+: Перемикання корпусу лише для наступної літери
^: Перемикання блокування з великої літери (тобто переключення регістру всіх літер)
=: Введіть, завершіть
* Очевидно, я замінив клавіші типу "BKSP" та "ENTER" на більш короткі версії
І тоді апаратний включатиме в себе D-Pad (або яку - або форму контролю , де ви могли б піти up, down, leftі right)
Екран також зазвичай дозволяє переходити з однієї сторони безпосередньо в іншу. Тобто, якщо ви були зосереджені на листі J, натискання rightдозволило б вам перейти до листа A.
Щоразу, коли я вводив своє ім’я, я завжди намагався розібратися якнайшвидше.
Мета:
Ваша програма буде приймати рядковий рядок, який може включати будь-який буквено-цифровий символ, включаючи пробіл та дефіс, і ваша мета - вивести найменшу кількість натискань клавіш на d-pad, щоб вивести потрібну рядок.
Міркування:
Вам не потрібно включати натиснуту клавішу для натискання фактичного символу.
Фокус завжди починається з A
клавіші Enter, =потрібно натиснути в кінці
Приклад:
input: Code Golf
output: 43
Пояснено:
A -> C= 2
C-> ^= 6 (рухається ліворуч)
^-> 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
Зауважте, що швидше натиснути +двічі на a _і a, Gніж ^один раз, і повернути назад.
Виграш подання (я дозволю щонайменше 1 Вт) буде найкоротшим рішенням (у байтах). Оскільки це моє перше питання, я сподіваюся, що це зрозуміло і не надто важко.