难题:
考虑一个带有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垫(或某种形式的控制,在那里你可以去up,down,left和right)
屏幕通常还可以让您从一侧直接移动到另一侧。也就是说,如果您专注于字母J,则按right将允许您移动到字母A。
每当我输入自己的名字时,我总是会尝试找出最快的方法。
目标:
您的程序将接受字符串输入,该字符串可以包含任何字母数字字符(包括空格和连字符),并且您的目标是在d键盘上输出最短的按键输出以输出所需的字符串。
注意事项:
您不需要包括用于按下实际字符的按键。
焦点始终始于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比击中^一次然后换回的速度更快。
获胜的提交(我将允许至少1w)将是最短的解决方案(以字节为单位)。由于这是我的第一个问题,我希望这是明确的并且不太难。