ปริศนา:
พิจารณาเกมคอนโซล / มือถือที่มี 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 - + ^ =
นั่นคือปุ่มตัวอักษรและตัวเลขทั้งหมดและต่อไปนี้:
_: พื้นที่เดียว
-: ยัติภังค์
+: สลับตัวพิมพ์สำหรับตัวอักษรถัดไปเท่านั้น
^: สลับการล็อกตัวพิมพ์ใหญ่ (นั่นคือสลับตัวพิมพ์ของตัวอักษรทั้งหมด)
=: Enter, complete
* เห็นได้ชัดว่าฉันแทนที่คีย์เช่น "BKSP" และ "ENTER" ด้วยเวอร์ชันที่สั้นกว่า
และจากนั้นฮาร์ดแวร์จะรวมถึง D-pad (หรือบางรูปแบบของการควบคุมที่คุณสามารถไปup, down, leftและright)
โดยทั่วไปหน้าจอยังช่วยให้คุณย้ายจากด้านหนึ่งไปอีกด้านหนึ่งได้โดยตรง นั่นคือถ้าคุณกำลังเพ่งความสนใจไปที่ตัวอักษรJกดจะช่วยให้คุณที่จะย้ายไปยังตัวอักษรrightA
เมื่อใดก็ตามที่ฉันป้อนชื่อฉันจะพยายามหาวิธีที่รวดเร็วที่สุดในการทำเช่นนั้น
เป้าหมาย:
โปรแกรมของคุณจะป้อนสตริงซึ่งอาจรวมถึงตัวอักษรและตัวเลขรวมถึงช่องว่างและยัติภังค์และเป้าหมายของคุณคือการส่งออกจำนวนกดปุ่มที่สั้นที่สุดบน 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= 1 -> = 3
G-> o= 3
o-> l= 3
l-> f= 5
f-> == 6
โปรดทราบว่าการกดปุ่ม+สองครั้งเร็วกว่า_และGจะเป็นการกด^ครั้งเดียวแล้วสลับกลับ
การส่งที่ชนะ (ฉันจะให้อย่างน้อย 1w) จะเป็นทางออกที่สั้นที่สุด (เป็นไบต์) นี่เป็นคำถามแรกของฉันฉันหวังว่านี่จะชัดเจนและไม่ยากเกินไป