เป้าหมายของการท้าทายนี้คือการเขียนโปรแกรมหรือฟังก์ชั่นที่คืนค่าจำนวนนัดน้อยที่สุดที่จำเป็นในการจบหลักสูตร
อินพุต
- เลย์เอาต์ของหลักสูตรสามารถส่งผ่านในรูปแบบและรูปแบบที่คุณต้องการ (อ่านจากคอนโซลผ่านเป็นพารามิเตอร์อินพุตอ่านจากไฟล์หรืออื่น ๆ หลายบรรทัดสตริงสตริงอาร์เรย์อักขระสองมิติ / อาร์เรย์ไบต์)
- ตำแหน่งเริ่มต้นของลูกบอลและหลุมสามารถส่งผ่านเป็นอินพุตได้เช่นกันโดยไม่จำเป็นต้องแยกวิเคราะห์จากอินพุต ในกรณีทดสอบพวกเขาจะรวมอยู่ในหลักสูตรเพื่อให้แน่ใจว่าไม่มีความสับสนเกี่ยวกับตำแหน่งที่แท้จริง
- คุณสามารถทำการแมปอักขระที่ป้อนเข้ากับสิ่งอื่นได้ตราบใดที่ยังจำได้ว่าเป็นอักขระที่แตกต่าง (เช่นอักขระ ASCII ที่พิมพ์ได้)
เอาท์พุต
- โปรแกรมจะต้องส่งคืนคะแนนต่ำสุดที่เป็นไปได้ (จำนวนการนัดหยุดงานที่น้อยที่สุดที่จำเป็นในการเข้าถึงรู) สำหรับหลักสูตรใด ๆ ที่ผ่านเป็นอินพุตในรูปแบบที่เหมาะสม (สตริงจำนวนเต็มลอยหรือไฮกุอธิบายผลลัพธ์)
- หากหลักสูตรเป็นไปไม่ได้ที่จะเอาชนะให้ส่งคืน
-1
(หรือมูลค่าที่ผิดพลาดอื่น ๆ ที่คุณเลือกซึ่งจะไม่ถูกส่งคืนสำหรับหลักสูตรที่เอาชนะได้)
ตัวอย่าง:
ในตัวอย่างนี้ตำแหน่งจะถูกระบุด้วย 0, X / Y, จากซ้ายไปขวา, จากบนลงล่าง - แต่คุณสามารถใช้รูปแบบใดก็ได้ที่คุณต้องการเนื่องจากผลลัพธ์นั้นเป็นรูปแบบที่ไม่ขึ้นอยู่กับความสมบูรณ์
การป้อนข้อมูล:
###########
# ....#
# ...#
# ~ . #
# ~~~ . #
# ~~~~ #
# ~~~~ #
# ~~~~ o #
# ~~~~ #
#@~~~~ #
###########
Ball (Start-Position): 1/9
Hole (End-Position): 8/7
เอาท์พุท:
8
กฎและเขตข้อมูล
หลักสูตรประกอบด้วยฟิลด์ต่อไปนี้:
'@'
บอล - จุดเริ่มต้นของหลักสูตร'o'
Hole - เป้าหมายของหลักสูตร'#'
กำแพง - ลูกบอลจะหยุดเมื่อกระทบกำแพง'~'
น้ำ - ต้องหลีกเลี่ยง'.'
ทราย - ลูกบอลจะหยุดบนทรายทันที' '
Ice - Ball จะยังคงเลื่อนจนกว่าจะพบบางสิ่ง
กฎพื้นฐานและข้อ จำกัด ของเกม:
- ลูกบอลไม่สามารถเคลื่อนที่ในแนวทแยงมุมได้ทั้งซ้ายขวาขึ้นและลง
- ลูกบอลจะไม่หยุดที่ด้านหน้าของน้ำเฉพาะด้านหน้ากำแพงบนทรายและในหลุม
- ภาพลงไปในน้ำไม่ถูกต้อง / เป็นไปไม่ได้
- ลูกบอลจะอยู่ในหลุมไม่ข้ามมันเหมือนน้ำแข็ง
- หลักสูตรเป็นรูปสี่เหลี่ยมผืนผ้าเสมอ
- หลักสูตรนี้ล้อมรอบด้วยน้ำหรือผนังเสมอ (ไม่จำเป็นต้องตรวจสอบขอบเขต)
- มีเสมอหนึ่งลูกและหนึ่งหลุม
- ไม่ใช่ทุกหลักสูตรที่สามารถเอาชนะได้
- อาจมีหลายเส้นทางที่ให้คะแนน (ต่ำสุด) เดียวกัน
ช่องโหว่และเงื่อนไขการชนะ
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- โปรแกรมจะต้องยุติ
- คุณไม่สามารถสร้างกฎเพิ่มเติมได้ (การกระแทกลูกบอลจนกระโดดข้ามน้ำเด้งออกมาจากกำแพงกระโดดข้ามทุ่งทรายโค้งรอบมุม ฯลฯ )
- นี่คือรหัสกอล์ฟดังนั้นการแก้ปัญหาที่มีจำนวนอักขระน้อยที่สุดจะเป็นผู้ชนะ
- การแก้ปัญหาจะต้องสามารถจัดการกับกรณีทดสอบที่ให้มาทั้งหมดหากเป็นไปไม่ได้เนื่องจากข้อ จำกัด ของภาษาที่ใช้โปรดระบุว่าในคำตอบของคุณ
กรณีทดสอบ
หลักสูตร # 1 (2 ครั้ง)
####
# @#
#o~#
####
หลักสูตร # 2 (เป็นไปไม่ได้)
#####
#@ #
# o #
# #
#####
หลักสูตร # 3 (3 ครั้ง)
~~~
~@~
~.~
~ ~
~ ~
~ ~
~ ~
~.~
~o~
~~~
หลักสูตร # 4 (2 ครั้ง)
#########
#~~~~~~~#
#~~~@~~~#
## . ##
#~ ~ ~ ~#
#~. o .~#
#~~~ ~~~#
#~~~~~~~#
#########
หลักสูตร # 5 (เป็นไปไม่ได้)
~~~~~~~
~... ~
~.@.~.~
~... ~
~ ~ ~.~
~ . .o~
~~~~~~~