ปริศนา MUเป็นปริศนาที่คุณพบว่าคุณสามารถเปิดMI
เข้าไปMU
ให้การดำเนินงานดังต่อไปนี้:
หากสตริงของคุณสิ้นสุดลง
I
คุณสามารถเพิ่ม aU
ถึงท้าย (เช่นMI -> MIU
)หากสตริงของคุณเริ่มต้นด้วย
M
คุณสามารถผนวกสำเนาของส่วนหลังจากM
ที่สตริง
(เช่นMII -> MIIII
)ถ้าสายของคุณมีสามติดต่อกันของคุณอาจมีการเปลี่ยนแปลงให้เป็น
I
(เช่น)U
MIII -> MU
หากสตริงของคุณมีสองรายการติดกัน
U
คุณสามารถลบออกได้ (เช่นMUUU -> MU
)
งานของคุณคือการสร้างโปรแกรมที่กำหนดว่าสิ่งนี้สามารถทำได้สำหรับสตริงเริ่มต้นและสิ้นสุด
โปรแกรมของคุณจะใช้สองสายเป็นอินพุต แต่ละสตริงจะประกอบด้วยสิ่งต่อไปนี้:
M
หนึ่งสตริงถึงยี่สิบเก้า
I
'และU
' s
โปรแกรมของคุณจะส่งคืนtrue
(หรือเป็นตัวแทนของภาษาการเขียนโปรแกรมของมัน / YPLRT) หากสตริงที่สองสามารถเข้าถึงได้จากสตริงแรกและfalse
(หรือ YPLRT) หากไม่ใช่
ตัวอย่างอินพุตและเอาต์พุต:
MI MII
true
MI MU
false
MIIIIU MI
true
รหัสที่สั้นที่สุดในภาษาใด ๆ เพื่อทำสิ่งนี้ชนะ
MI
นั้นเป็นM(I|U)*
จำนวนที่I
ไม่เท่ากับ 3 อย่างแน่นอนและการตรวจสอบโดยตรงนั้นจะทำให้รหัสสั้นลงอย่างแน่นอน นอกจากนี้ฉันไม่ทราบเกี่ยวกับ a-Priori เกี่ยวกับความยาวของสตริงที่จำเป็นสำหรับขั้นตอนกลางดังนั้นการค้นหาโดยตรงอาจไม่สามารถทำได้
MI
สตริงที่เข้าถึงได้
IM
เป็นที่จัดทำหรือMUMMI
?