ฉันชอบปริศนาตัวต่อแบบเลื่อน แต่เมื่อไม่นานมานี้ฉันไม่มีเวลา ดังนั้นฉันต้องการโปรแกรมที่จะให้ฉันแก้ปริศนาเลื่อนกระเบื้องโดยเฉพาะอย่างยิ่งปริศนา Klotski
ข้อมูลที่คุณป้อนจะอยู่ในรูปแบบต่อไปนี้:
#######
#001gg#
##.222#
.######
โดยที่#
หมายถึงผนัง.
หมายถึงพื้นที่เปิดโล่งg
หมายถึงเป้าหมายและตัวเลขที่อยู่ติดกันแสดงถึงบล็อกที่แตกต่างกัน คุณสามารถสันนิษฐานได้ว่า:
- จะมีไม่เกิน 10 บล็อก
- จะไม่มีสองช่วงตึกที่มีหมายเลขเดียวกัน
- บล็อคทั้งหมดจะถูกล้อมรอบด้วยกำแพง
- ตารางเป็นรูปสี่เหลี่ยมผืนผ้า
0
บล็อกที่มีขนาดใหญ่พอที่จะครอบคลุมทั้งหมดของสี่เหลี่ยมเป้าหมาย- มีทางออกที่ถูกต้อง
คุณต้องกลับลำดับการเคลื่อนไหวที่จะทำให้0
บล็อกเพื่อให้ครอบคลุมสี่เหลี่ยมเป้าหมายทั้งหมด บล็อกไม่สามารถผ่านผนังหรือบล็อกอื่น ๆ สำหรับปริศนาข้างต้นลำดับที่เหมาะสมจะเป็น
2L,1R,1R,1D,0R,0R,0R
ในขณะที่หมายถึงการเคลื่อนย้าย2
บล็อก 1 ตารางไปทางซ้าย1
บล็อก 2 สี่เหลี่ยมทางขวา (ด้านบนของเป้าหมาย) จากนั้นลง 1 ตารางเมตรจากนั้น0
บล็อก 3 สี่เหลี่ยมทางขวา
จริงๆแล้วมีหลายลำดับที่จะทำงานให้กับปัญหาข้างต้นและการผลิตใด ๆ ของพวกเขาเป็นที่ยอมรับ คำตอบของคุณควรจะดีที่สุดซึ่งหมายความว่าควรสร้างลำดับที่แก้ปริศนาได้ในไม่กี่ขั้นตอนเท่าที่จะทำได้
ลำดับควรจะพิมพ์ออกมาข้างต้น แต่สามารถคั่นด้วยเครื่องหมายจุลภาค, ขึ้นบรรทัดใหม่หรือช่องว่าง ฉันไม่สนหรอกว่ามีคอมม่าต่อท้ายหรือช่องว่าง คุณควรสร้างผลลัพธ์ในเวลาที่เหมาะสม (สูงสุด 120 วินาทีกับปริศนาด้านล่าง)
ปริศนา 1:
..####..
..#00#..
###00###
#......#
#.1122.#
##3124##
.#3344#.
.##55##.
..#gg#..
..####..
ปริศนา 2:
######
#1002#
#1002#
#3445#
#3675#
#8gg9#
######
ปริศนา 3:
.####.
##1g##
#22g3#
#4255#
#4.56#
#.006#
#7008#
######
ปริศนา 4:
.####.
##00##
#.00g#
#.0.1#
#..g2#
######
นี่คือโค้ดกอล์ฟดังนั้นทางออกที่สั้นที่สุด (เป็นไบต์) ชนะ!