สำหรับเกมคอนโซลที่ทันสมัยและอุปกรณ์อื่น ๆ ที่ไม่มีแป้นพิมพ์แบบดั้งเดิมการพยายามป้อนข้อความเป็นฝันร้าย การพิมพ์ด้วยปุ่มเพียงไม่กี่ปุ่มและจอยสติกบนคีย์บอร์ดเสมือนนั้นน่ารำคาญและฉันชอบที่จะทำการกดปุ่มหรือเคลื่อนไหวให้น้อยที่สุดเท่าที่จะทำได้
แป้นพิมพ์ที่คุณจะใช้ดูเหมือนว่า:
+---+---+---+---+---+---+---+---+---+---+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
+---+---+---+---+---+---+---+---+---+---+
| q | w | e | r | t | y | u | i | o | p |
+---+---+---+---+---+---+---+---+---+---+
| a | s | d | f | g | h | j | k | l | - |
+---+---+---+---+---+---+---+---+---+---+
| z | x | c | v | b | n | m | _ | @ | . |
+---+---+---+---+---+---+---+---+---+---+
การดำเนินการต่อไปนี้สามารถใช้ได้:
L
: เลื่อนหนึ่งช่องไปทางซ้ายบนแป้นพิมพ์ (ล้อม)R
: เลื่อนหนึ่งช่องไปทางขวาบนแป้นพิมพ์ (ล้อม)U
: เลื่อนหนึ่งช่องขึ้นไปบนแป้นพิมพ์ (wraps)D
: เลื่อนหนึ่งช่องลงบนแป้นพิมพ์ (wraps)Y
: แทรกช่องว่างB
: เลื่อนตัวชี้การแทรกหนึ่งช่องว่างไปทางซ้าย (ไม่ทำอะไรเลยหากตัวชี้อยู่ที่จุดเริ่มต้น)F
: เลื่อนตัวชี้การแทรกหนึ่งช่องว่างไปทางขวา (ไม่ทำอะไรเลยหากตัวชี้อยู่ท้ายสุด)C
: สลับการล็อกแคปA
: แทรกอักขระที่เลือกที่ตำแหน่งของตัวชี้การแทรก
รับสตริงอินพุตที่มีเฉพาะอักขระ ASCII ที่สามารถพิมพ์ได้โดยใช้แป้นพิมพ์และคำสั่งด้านบน (จับคู่[a-zA-Z0-9 _@.-]*
) ส่งออกลำดับของคำสั่งที่จะส่งผลให้เกิดสตริงออก ตำแหน่งเริ่มต้นของเคอร์เซอร์อยู่ที่1
ปุ่ม (ซ้ายบน) และปุ่มปิดใช้งานเริ่มแรก
เกณฑ์การให้คะแนน
สำหรับสตริงที่กำหนดวิธีการที่ไร้เดียงสาจะใช้สำหรับอักขระแต่ละตัวในสตริงนำทางไปยังอักขระบนคีย์บอร์ดตามเส้นทางที่สั้นที่สุดสลับแคปล็อคหากจำเป็นและเลือกอักขระ (length of input string) + (sum of Manhattan distances on keyboard between consecutive non-space characters) + (number of times the string alternates between lowercase and uppercase characters) + (1 if string starts with an uppercase letter else 0)
วิธีการดังกล่าวไร้เดียงสาจะสร้างคำสั่งของความยาว ตัวอย่างเช่นวิธีการไร้เดียงสาสำหรับ101
จะส่งผลALARA
ให้คำสั่งความยาว 5 และNoob 5
จะส่งผลDDDRRRRRCAUURRRCAADDLLLLAYUUUA
ให้คำสั่งความยาว 30
อย่างไรก็ตามการส่งของคุณพยายามที่จะทำดีกว่าแนวทางไร้เดียงสา สำหรับแต่ละอินพุตสตริงการส่งของคุณจะได้รับคะแนนเท่ากับจำนวนคำสั่งที่แนวทางไร้เดียงสาใช้ลบด้วยจำนวนคำสั่งที่คุณส่งออกผลลัพธ์ คะแนนรวมของคุณจะเป็นคะแนนรวมของคะแนนแต่ละคะแนน
กฎระเบียบ
- ส่งจะถูกเรียกใช้บนพื้นที่ทำงานเสมือนฟรีCloud9 เวิร์กสเปซมี RAM 512 MB, พื้นที่ดิสก์ 2 GB, ซีพียู Intel 8 Xeon (R) ที่ 2.50 GHz (ข้อมูลซีพียูแบบเต็ม, พบได้จากการทำงาน
cat /proc/cpuinfo
, สามารถพบได้ที่นี่ ) และใช้ Ubuntu 14.04 64 บิต เชื่อถือได้ คุณอาจร้องขอการเข้าถึงพื้นที่ทำงานการทดสอบเพื่อเรียกใช้และให้คะแนนการส่งของคุณหรือฉันสามารถให้คะแนนมันสำหรับคุณ - การส่งจะถูกเรียกใช้หนึ่งครั้งต่อกรณีทดสอบ การจัดเก็บสถานะระหว่างการทำงานนั้นเป็นสิ่งต้องห้าม การส่งไม่สามารถเขียนหรืออ่านจากไฟล์ใด ๆ นอกเหนือจากไฟล์ต้นฉบับ (ซึ่งอาจไม่สามารถแก้ไขได้ระหว่างการรัน) โดยมีข้อยกเว้นที่เป็นไปได้ในการอ่านไฟล์อินพุตหากจำเป็น
- การส่ง จำกัด เวลารันไทม์ 1 นาทีสำหรับแต่ละกรณีทดสอบ ผลงานที่ส่งออกอาจมีทางออกที่หลากหลาย แต่จะใช้เฉพาะทางออกสุดท้ายที่ถูกต้องภายในเวลาที่กำหนดเพื่อให้คะแนน ความล้มเหลวในการส่งออกทางออกที่ถูกต้องใด ๆ ภายในเวลาที่กำหนดจะส่งผลให้คะแนน 0 สำหรับกรณีทดสอบนั้น
- โปรดระบุคำแนะนำเกี่ยวกับวิธีเรียกใช้การส่งของคุณรวมถึงเครื่องมือ / ไลบรารีใด ๆ ที่จำเป็นต้องติดตั้งซึ่งไม่รวมอยู่ในการติดตั้ง Ubuntu 14.04 มาตรฐาน
- ผู้ชนะจะได้รับการยื่นด้วยคะแนนที่ใหญ่ที่สุด ในกรณีที่เสมอการส่งที่มีความซับซ้อนของอัลกอริทึมที่ดีกว่าจะชนะ หากการผูกยังไม่ได้รับการแก้ไขการส่งครั้งแรกเพื่อเข้าถึงคะแนนและความซับซ้อนของอัลกอริทึมจะชนะ
- การส่งอาจไม่เหมาะสำหรับกรณีทดสอบ ฉันขอสงวนสิทธิ์ในการเปลี่ยนแปลงกรณีทดสอบหากฉันรู้สึกว่ามีความจำเป็น
กรณีทดสอบ
รูปแบบ: input string => naive score
(หากคุณเห็นข้อผิดพลาดในสิ่งเหล่านี้โปรดแสดงความคิดเห็นพร้อมการแก้ไข)
101 => 5
quip => 12
PPCG => 15
Mego => 25
Noob 5 => 26
penguin => 27
867-5309 => 32
2_sPoOkY_4_mE => 60
The Nineteenth Byte => 76
penguins@SouthPole.org => 95
8xM3R__5ltZgrkJ.-W b => 98
correcthorsebatterystaple => 104
verylongRUNSOFCAPSandnocaps => 118
This is an English sentence. => 122
WNtza.akjzSP2GI0V9X .0epmUQ-mo => 131
Programming Puzzles and Code Golf => 140