บ๊อบถูกลักพาตัวและติดอยู่ในเขาวงกต งานของคุณคือช่วยเขาหาทางออก แต่เนื่องจากมันเป็นเขาวงกตที่มืดและน่ากลัวเขาจึงไม่เห็นอะไรเลย เขาสามารถรู้สึกได้ถึงผนังเมื่อเขาวิ่งเข้าไปในนั้นและรู้เมื่อเขาพบทางออก แต่ไม่รู้อะไรอีกแล้ว
เนื่องจากเขาต้องเรียกใช้โปรแกรมของคุณด้วยหน่วยความจำจึงต้องสั้นที่สุด
หมายเหตุ: ฉันใช้ปัญหานี้จากhttp://acmgnyr.org/year2016/problems.shtmlแต่ปรับใช้เล็กน้อยและเขียนโปรแกรมผู้พิพากษา / กรณีทดสอบด้วยตัวเอง
สเปค
- นี่เป็นปัญหาเชิงโต้ตอบดังนั้นโปรแกรมของคุณจะส่งออกไปยัง stdout และรับคำตอบจาก stdin
- โปรแกรมหนึ่งเอาท์พุทของคุณสามารถของการย้าย
right,left, ,downup - จากนั้นจะได้รับเป็นอินพุตอย่างใดอย่างหนึ่งต่อไปนี้:
wall- นี่หมายความว่าบ็อบชนกำแพง บ๊อบจะอยู่ในที่เดียวกันsolved- บ๊อบพบทางออกแล้ว! โปรแกรมของคุณควรออกโดยไม่ต้องพิมพ์อะไรอีกok- บ๊อบสามารถเคลื่อนที่ในทิศทางที่กำหนดได้
- หากเขาวงกตไม่มีทางออกโปรแกรมของคุณควรส่งออก
no exitเพื่อแจ้งให้ Bob รู้ว่าเขาควรยอมแพ้ โปรแกรมของคุณควรออกโดยไม่ต้องพิมพ์อะไรอีก - เนื่องจากบ็อบกำลังรีบออกไปโปรแกรมของคุณจึงไม่ควรเคลื่อนไหวออกไปภายนอก ในคำอื่น ๆโปรแกรมของคุณไม่ได้รับอนุญาตให้ย้ายไปในทิศทางเดียวกันจากตารางเดียวกันสองครั้ง
- นี่คือรหัสกอล์ฟโปรแกรมที่สั้นที่สุดชนะ!
ตัวอย่าง
ในตัวอย่างต่อไปนี้Sเป็นตารางเริ่มต้นXคือทางออก#เป็นผนังและช่องว่างเป็นช่องสี่เหลี่ยมที่ถูกต้อง เนื่องจากไม่มีคำตอบที่ถูกต้องเพียงอย่างเดียวนี่เป็นเพียงตัวอย่างของการแก้ปัญหา นอกจากนี้โปรดทราบว่าภาพวาดของเขาวงกตนั้นอยู่ที่นั่นเพื่อให้คุณเห็นและโปรแกรมของคุณจะไม่ได้รับสิ่งเหล่านั้นเป็นอินพุต
########
#S #
###### #
# #
#X#
right
ok
right
ok
right
ok
right
ok
right
ok
right
wall
down
ok
right
wall
down
ok
right
wall
down
solved
#####
# S #
#####
right
ok
right
wall
down
wall
up
wall
left
ok
down
wall
up
wall
left
ok
down
wall
up
wall
left
wall
right
ok
no exit
solved
###############################
#S #
############## ### #
# #X# #
# #
##################
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
wall
down
ok
right
wall
down
ok
right
wall
down
ok
right
wall
down
wall
left
ok
down
wall
up
ok
up
ok
left
ok
down
ok
down
ok
down
wall
left
ok
down
wall
up
ok
up
ok
left
ok
down
ok
down
ok
down
wall
left
ok
down
wall
up
ok
up
ok
left
wall
down
ok
left
wall
down
ok
left
ok
down
wall
up
wall
left
ok
down
wall
up
solved
โปรแกรมตรวจสอบ
- ฉันเขียนตัวตรวจสอบวิธีแก้ไขใน Python คุณสามารถค้นหาได้ที่https://gist.github.com/Maltysen/f0186019b3aa3812d812f8bb984fee19
- เรียกใช้เหมือน
python mazechecker.py ./mazesolverกัน mazesมันจะทดสอบโปรแกรมของคุณในเขาวงกตทั้งหมดที่อยู่ในโฟลเดอร์ที่เรียกว่า- เขาวงกตอยู่ในไฟล์แยกต่างหากในรูปแบบเดียวกันจากด้านบน
- มันจะตรวจสอบเงื่อนไขทั้งหมดที่ระบุไว้ข้างต้นและแจ้งให้คุณทราบหากการแก้ปัญหาของคุณละเมิดใด ๆ
python mazechecker.py -d ./mazesolverคุณสามารถมีได้พิมพ์ข้อมูลการวินิจฉัยเพิ่มเติมกับ- คุณสามารถค้นหาซิป
mazesโฟลเดอร์ที่นี่ คุณสามารถเพิ่มของคุณเองหากคุณต้องการ
solvedเมื่อส่งออกno exitหรือไม่ ถ้าเป็นเช่นนั้นโปรดระบุไว้ในกฎไม่ใช่เฉพาะในกรณีทดสอบ!
x,yและไปupพร้อมตอบกลับwallจากนั้นrightตอบกลับอีกครั้งwallฉันขอลองupอีกครั้งได้ไหม หรือเป็นเพียงleftและdownยังคงใช้ได้ตั้งแต่ฉันยังไม่ได้ย้ายจากสแควร์นี้หรือยัง