เมื่อเร็ว ๆ นี้ฉันได้เล่นเกมที่เรียกว่าอัลคาซ่า มันเป็นเกมกระดานปริศนาที่เป้าหมายของคุณคือเข้าจากประตูหนึ่งผ่านผ่านช่องสี่เหลี่ยมทั้งหมดและออกจากประตูอีกบานหนึ่ง กฎเท่านั้นคือ:
- ป้อนหนึ่งครั้งออกครั้งเดียว;
- ผ่านช่องสี่เหลี่ยมทั้งหมด
- อย่าผ่านช่องสี่เหลี่ยมมากกว่าหนึ่งครั้ง
ภาพด้านล่างแสดงตัวอย่างของอัลคาซ่าร์บอร์ดและทางด้านขวาของปริศนาที่แก้แล้ว (แน่นอนว่านี่เป็นภาพที่ง่าย):
คุณสามารถค้นหาปริศนาเพิ่มเติมได้ที่http://www.theincrediblecompany.com/try-alcazarและดาวน์โหลดเกมที่ PlayStore (PS: ไม่ใช่โฆษณา)
ปัญหาของฉันคือฉันเกือบจะจบเกมยกเว้นระดับหนึ่ง ฉันไม่สามารถหาวิธีแก้ไขได้ ดังนั้นความท้าทายที่ฉันเสนอคือสร้างอัลกอริธึมที่แก้ระดับ1ปกติ2ระดับอัลคาซาร์ที่แก้ไขได้
แน่นอนฉันไม่ได้ขอให้ทุกคนสร้างล่ามภาพเพื่ออ่านภาพและไขปริศนา (หรือฉัน) ดังนั้นฉันจึงไขปริศนาด้านบนโดยใช้อักขระวาดกล่อง ตัวต่อและวิธีแก้ปัญหาจะเป็นดังนี้:
╔═══════╗ ╔═══════╗
║▒ ▒ ▒ ▒║ ║┌─┐ ┌─┐║
║ ║ ║ ║│ │ │║│║
╣▒ ▒ ▒║▒╠ ╣│ └─┘║└╠
║ ══╦═╩═╣ ║│══╦═╩═╣
║▒ ▒║▒ ▒║ ║└─┐║┌─┐║
║ ║ ║ ==> ║ │║│ │║
╣▒ ▒║▒ ▒║ ╣┐ │║│ │║
║ ║ ║ ║ ║│║│║│ │║
╣▒║▒ ▒ ▒║ ╣│║└─┘ │║
║ ║ ║ ║│║ │║
║▒ ▒ ▒ ▒║ ║└─────┘║
╚═══════╝ ╚═══════╝
ในกระดานด้านบน▒
เป็นเซลล์ที่จะเติมเต็ม
หนึ่งสามารถสังเกตเห็นว่ามีช่องว่างในแนวตั้งและแนวนอนระหว่างเซลล์ นี่เป็นเพราะฉันต้องแทรกช่องว่างระหว่างเซลล์เพื่อเพิ่มผนัง ซึ่งหมายความว่าเฉพาะเซลล์ที่สำคัญเท่านั้นคือเซลล์ด้านบนด้านล่างด้านซ้ายและด้านขวาของแต่ละเซลล์ เส้นทแยงมุมสามารถลบได้โดยไม่ทำให้ข้อมูลสูญหาย ตัวอย่างเช่นในกระดานด้านล่างทั้งสองเป็นตัวแทนของปริศนาเดียวกัน:
╔════╩╗ ═ ═ ╩
║▒ ▒ ▒║ ║▒ ▒ ▒║
║ ═══ ║ ═
║▒ ▒ ▒║ == ║▒ ▒ ▒║
║ ║
║▒ ▒ ▒║ ║▒ ▒ ▒║
╚╦════╝ ╦═ ══
สิ่งนี้ใช้ได้สำหรับการแก้ปัญหาด้วยเช่นกัน นั่นคือมันไม่จำเป็นต้องเชื่อมต่อเซลล์:
╔════╩╗ ╔════╩╗ ╔════╩╗
║▒ ▒ ▒║ ║┌───┘║ ║┌ ─ ┘║
║ ═══ ║ ║│═══ ║ ║ ═══ ║
║▒ ▒ ▒║ == ║└───┐║ => ║└ ─ ┐║
║ ║ ║ │║ ║ ║
║▒ ▒ ▒║ ║┌───┘║ ║┌ ─ ┘║
╚╦════╝ ╚╦════╝ ╚╦════╝
ในตัวอย่างด้านบนโซลูชันทั้งสองมีความหมายเหมือนกัน
ใช่กรณีทดสอบ ที่นี่พวกเขาคือ:
ปริศนา 1
╔════╩╗ ╔════╩╗
║▒ ▒ ▒║ ║┌ ─ ┘║
║ ═══ ║ ║ ═══ ║
║▒ ▒ ▒║ => ║└ ─ ┐║
║ ║ ║ ║
║▒ ▒ ▒║ ║┌ ─ ┘║
╚╦════╝ ╚╦════╝
ปริศนา 2
╔═════╗ ╔═════╗
║▒ ▒ ▒║ ║┌ ─ ┐║
║ ║ ║ ║ ║ ║
╣▒ ▒║▒║ ╣└ ┐║│║
║ ║ ║ ║ => ║ ║ ║ ║
╣▒║▒ ▒╠ ╣┐║│ │╠
║ ║ ║ ║ ║ ║
║▒ ▒ ▒║ ║└ ┘ │║
╚════╦╝ ╚════╦╝
ปริศนา 3
╔════╩══╗ ╔════╩══╗
║▒ ▒ ▒ ▒║ ║┌ ┐ └ ┐║
║ ║ ║ ║ ║ ║ ║ ║
╣▒║▒ ▒║▒╠ ╣┘║└ ┐║│╠
║ ╚══ ║ ║ ║ ╚══ ║ ║
║▒ ▒ ▒ ▒╠ => ║┌ ─ ┘ │╠
║ ═══ ║ ║ ═══ ║
║▒ ▒ ▒ ▒║ ║│ ┌ ┐ │║
║ ║ ║ ║ ║ ║
║▒ ▒║▒ ▒║ ║└ ┘║└ ┘║
╚═══╩═══╝ ╚═══╩═══╝
ปริศนา 4
╔═══════╗ ╔═══════╗
║▒ ▒ ▒ ▒║ ║┌ ┐ ┌ ┐║
║ ║ ║ ║ ║ ║
╣▒ ▒ ▒║▒╠ ╣│ └ ┘║└╠
║ ══╦═╩═╣ ║ ══╦═╩═╣
║▒ ▒║▒ ▒║ ║└ ┐║┌ ┐║
║ ║ ║ => ║ ║ ║
╣▒ ▒║▒ ▒║ ╣┐ │║│ │║
║ ║ ║ ║ ║ ║ ║ ║
╣▒║▒ ▒ ▒║ ╣│║└ ┘ │║
║ ║ ║ ║ ║ ║
║▒ ▒ ▒ ▒║ ║└ ─ ─ ┘║
╚═══════╝ ╚═══════╝
ปริศนา 5
╔══╩══════╗ ╔══╩══════╗
║▒ ▒ ▒ ▒ ▒║ ║┌ ─ ┐ ┌ ┐║
║ ║ ║ ║ ║ ║
║▒ ▒║▒ ▒ ▒╠ ║└ ┐║└ ┘ │╠
║ ╠════ ║ ║ ╠════ ║
║▒ ▒║▒ ▒ ▒║ => ║┌ ┘║┌ ─ ┘║
║ ║ ║ ║ ║ ║
║▒ ▒║▒ ▒ ▒╠ ║└ ┐║└ ─ ─╠
║ ╠═════╣ ║ ╠═════╣
║▒ ▒║▒ ▒ ▒║ ║┌ ┘║┌ ─ ┐║
║ ║ ║ ║ ║ ║
║▒ ▒ ▒ ▒ ▒║ ║└ ─ ┘ ┌ ┘║
╚══╦═══╦══╝ ╚══╦═══╦══╝
ปริศนา 6
╔═══════════╗ ╔═══════════╗
║▒ ▒ ▒ ▒ ▒ ▒║ ║┌ ┐ ┌ ┐ ┌ ┐║
║ ║ ║ ║
║▒ ▒ ▒ ▒ ▒ ▒║ ║│ └ ┘ └ ┘ │║
║ ═══ ║ ║ ═══ ║
║▒ ▒ ▒ ▒ ▒ ▒║ ║└ ┐ ┌ ─ ─ ┘║
║ ═══ ║ ║ ═══ ║
╣▒ ▒ ▒ ▒ ▒ ▒╠ => ╣┐ │ │ ┌ ┐ ┌╠
║ ║ ║ ║
║▒ ▒ ▒ ▒ ▒ ▒║ ║│ │ │ │ │ │║
║ ║ ║ ║ ║ ║ ║ ║
║▒ ▒║▒ ▒║▒ ▒║ ║│ │║│ │║│ │║
║ ║ ║ ║ ║ ║ ║ ║
║▒ ▒ ▒ ▒ ▒ ▒║ ║└ ┘ └ ┘ └ ┘║
╚═══════════╝ ╚═══════════╝
ปริศนา 7
╔════╩════════╦╩╗ ╔════╩════════╦╩╗
║▒ ▒ ▒ ▒ ▒ ▒ ▒║▒║ ║┌ ─ ─ ─ ─ ─ ┐║│║
║ ║ ║ ║ ║ ║ ║ ║ ║ ║
║▒║▒ ▒ ▒ ▒║▒ ▒ ▒║ ║│║┌ ─ ─ ┐║┌ ┘ │║
║ ║ ║ ═══ ║ ║ ║ ║ ║ ═══ ║ ║
║▒ ▒║▒ ▒ ▒ ▒ ▒ ▒╠ ║│ │║┌ ─ ┘ └ ┐ │╠
║ ║ ║ ║ ║ ║
║▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒║ ║│ │ └ ┐ ┌ ┐ └ ┘║
║ ║ ║ ══╣ ║ ║ ║ ══╣
║▒ ▒ ▒║▒║▒ ▒ ▒ ▒║ ║│ └ ┐║│║│ └ ─ ┐║
║ ║ ║ ║ ║ ║ ║ ║
║▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒║ ║│ ┌ ┘ │ └ ┐ ┌ ┘║
║ ║ ══╣ => ║ ║ ══╣
║▒ ▒ ▒ ▒ ▒ ▒║▒ ▒║ ║└ ┘ ┌ ┘ ┌ ┘║└ ┐║
╠══ ║ ╚══ ║ ╠══ ║ ╚══ ║
║▒ ▒ ▒ ▒ ▒║▒ ▒ ▒║ ║┌ ┐ └ ┐ │║┌ ─ ┘║
║ ║ ║ ║ ║ ║ ║ ║ ║ ║
║▒ ▒ ▒║▒║▒ ▒ ▒ ▒║ ║│ └ ┐║│║│ └ ─ ┐║
║ ║ ║ ║ ╔══ ║ ║ ║ ║ ║ ╔══ ║
║▒║▒ ▒ ▒ ▒║▒ ▒ ▒║ ║│║┌ ┘ │ │║┌ ┐ │║
║ ║ ║ ║ ║ ║ ║ ║ ║ ║
║▒ ▒ ▒ ▒║▒ ▒ ▒ ▒║ ║│ └ ─ ┘║└ ┘ │ │║
║ ╚══ ║ ║ ╚══ ║
║▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒║ ║└ ─ ─ ─ ─ ─ ┘ │║
╚════╦═╦═╦═════╦╝ ╚════╦═╦═╦═════╦╝
ปริศนา 8 (ขออภัยฉันไม่มีวิธีแก้ปัญหานี้)
╔══╩╦══╩═══╩═╩═╩═══╩╗
║▒ ▒║▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒║
║ ║ ║
╣▒ ▒║▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒║
║ ╚══ ╔══ ╔═══╣
╣▒ ▒ ▒ ▒║▒ ▒ ▒ ▒║▒ ▒╠
║ ║ ╔══ ║ ║
╣▒ ▒ ▒ ▒ ▒ ▒║▒ ▒ ▒ ▒╠
║ ║ ║
║▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒╠
║ ║ ║
╣▒ ▒ ▒ ▒ ▒ ▒║▒ ▒ ▒ ▒╠
║ ╔═══╗ ╚══ ║
╣▒ ▒║▒ ▒║▒ ▒ ▒ ▒ ▒ ▒║
║ ║ ║ ║
╣▒ ▒║▒ ▒║▒ ▒ ▒ ▒ ▒ ▒╠
║ ══╝ ║ ╔══ ║
║▒ ▒ ▒ ▒║▒ ▒ ▒ ▒║▒ ▒║
║ ══╗ ╚══ ╔══ ║ ║
╣▒ ▒ ▒║▒ ▒ ▒║▒ ▒ ▒ ▒╠
║ ║ ║ ║ ║
╣▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒║▒ ▒║
║ ═══ ══╗ ║ ║
╣▒ ▒ ▒ ▒ ▒ ▒║▒ ▒ ▒ ▒╠
╠══ ║ ║ ╔══ ║
║▒ ▒║▒ ▒ ▒ ▒ ▒ ▒║▒ ▒╠
║ ╚══ ║ ║ ║ ║
╣▒ ▒ ▒ ▒║▒ ▒║▒ ▒ ▒ ▒╠
║ ║ ║ ║
║▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒ ▒║
╚══╦═══╦═══╦═╦═╦═╦═╦╝
อินพุต
การป้อนรหัสของคุณสามารถเป็นตัวแทนได้ตราบใดที่มันปฏิบัติตามกฎเหล่านี้:
ต้องเป็นอินพุตกราฟิก ดังนั้นจึงเป็นไปไม่ได้ที่จะอ่านรายการพิกัดตัวอย่างเช่น
ผนังแนวนอนผนังแนวตั้งและประตูจะต้องแตกต่างกันและต้องทำจากอักขระที่มองเห็นได้ (ไม่มีอักขระว่าง)
▒
จะถูกแทนที่ด้วยช่องว่าง ฉันใช้ตัวละครอื่นเพื่อไฮไลต์พวกเขา
เอาท์พุต
เอาท์พุทยังสามารถมีการแสดงใด ๆ ตราบเท่าที่มันเป็นไปตามกฎเหล่านี้:
ต้องเป็นเอาต์พุตกราฟิก นั่นคือเราสามารถมองเห็นเส้นทางได้โดยดูจากมัน
กฎข้อที่หนึ่งบ่งบอกว่าตัวอักษรเส้นทางจะแตกต่างกัน นั่นคือจะต้องมีอย่างน้อย 6 ตัวอักษรเส้นทาง แนวนอนแนวตั้งและมุม
สำหรับคำตอบที่ถูกต้องผลลัพธ์จะต้องเป็นบอร์ดเดียวกับอินพุต (ชัด) กับเซลล์ทั้งหมด (ในการเป็นตัวแทนของฉัน
▒
) เต็มไป เติมช่องว่างระหว่างเซลล์เป็นตัวเลือก
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ
1มีระดับ Alcazar บางระดับที่มีเซลล์และอุโมงค์เสริม สิ่งเหล่านี้จะไม่ได้รับการพิจารณา
2มีกระดาน Alcazar บางกระดานที่เป็นไปไม่ได้