ปริศนา:
พิจารณาเกมคอนโซล / มือถือที่มี 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
กดจะช่วยให้คุณที่จะย้ายไปยังตัวอักษร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
= 1 -> = 3
G
-> o
= 3
o
-> l
= 3
l
-> f
= 5
f
-> =
= 6
โปรดทราบว่าการกดปุ่ม+
สองครั้งเร็วกว่า_
และG
จะเป็นการกด^
ครั้งเดียวแล้วสลับกลับ
การส่งที่ชนะ (ฉันจะให้อย่างน้อย 1w) จะเป็นทางออกที่สั้นที่สุด (เป็นไบต์) นี่เป็นคำถามแรกของฉันฉันหวังว่านี่จะชัดเจนและไม่ยากเกินไป