pannenkoek2012ตั้งเป้าหมายที่จะทำSuper Mario 64ให้เสร็จสมบูรณ์ด้วยการกดเพียงไม่กี่ปุ่มเท่าที่จะเป็นไปได้ซึ่งทำให้ Mario Jump แต่ละ "A press" ประกอบด้วยสามส่วน:
- กดปุ่ม
- ถือมันสำหรับระยะเวลาใด ๆ
- ปล่อยมัน
ดูวิดีโอนี้ (1:15 - 3:23)สำหรับคำอธิบายที่ดีซึ่งรวมถึงภาพด้านบน (อย่างไรก็ตามความท้าทายนี้จะไม่ใช้คำศัพท์ half-A-press และจะวางสิ่งกีดขวางที่ต้องมีการปล่อย A. )
งาน:
เมื่อได้รับลำดับของสิ่งกีดขวางที่ต้องกด (P), กดปุ่ม (H) หรือปล่อย (R) ปุ่ม A จะทำการส่งออกจำนวนการกดที่เล็กที่สุดเพื่อเอาชนะพวกเขาตามลำดับที่กำหนด ตอนแรกปุ่ม A ไม่ได้ถูกเก็บไว้
ระบุอย่างเป็นทางการ: กำหนดสตริง S ของตัวละครPHR
พิจารณาสตริงของรูปแบบ(PH*R)*
ที่มี S เป็นลำดับและเอาท์พุทจำนวนที่น้อยที่สุดที่เป็นไปได้P
ในสตริงดังกล่าว หรือมิฉะนั้นให้หาจำนวนชิ้นที่น้อยที่สุดของแบบฟอร์มP?H*R?
ที่ S สามารถแบ่งออกเป็น
ตัวอย่าง
ดู Let 's RHRPHHHR
ในการป้อนข้อมูล ปุ่ม A เริ่มไม่ทำงานดังนั้นการเอาชนะสิ่งกีดขวางเริ่มต้นR
จำเป็นต้องกดปุ่มแล้วปล่อย (กด # 1) ต่อไปเราจะต้องกดปุ่มค้างไว้H
ซึ่งต้องกดอีกครั้งก่อน (กด # 2) จากนั้นจะสามารถปล่อยหลังจากนั้นเพื่อตอบสนองR
หลังจากนั้น สุดท้ายที่เหลือPHHHR
สามารถนำความพึงพอใจโดยกดเพียงครั้งเดียว (กด # 3) ตามด้วยการถือครองและปล่อยHHH
R
ดังนั้นจำนวนผลลัพธ์คือ 3
อีกวิธีในการดูคือเราสามารถแยกสตริงอินพุตออกเป็น 3 ส่วนของแบบฟอร์มPHH..HHR
ที่อาจตัดตัวอักษร
R
HR
PHHHR
รูปแบบอินพุต
อินพุตจะเป็นรายการหรือสตริงขององค์ประกอบที่แสดงถึงกดค้างไว้และปล่อยตามที่คุณต้องการ:
P, H, R
p, h, r
1, 2, 3
0, 1, 2
จับคู่ตามลำดับที่กำหนด อินพุตจะไม่ว่างเปล่า
กรณีทดสอบ:
P 1
H 1
R 1
HP 2
RHP 3
HHR 1
PHRH 2
RHRPHHHR 3
HHHHHH 1
PPRRHHPP 6
HPPRHRPRHPPRHPPHRP 12
PRHRHPHHPRRRHPPRHHPPRRRHRHPRPHPRPRHHRPPPRHPRP 28
ลีดเดอร์บอร์ด: