Roguelike pathfinding
งานของคุณจะถูกกำหนดให้เป็นสองมิติขององค์ประกอบที่อธิบายไว้ด้านล่างซึ่งหมายถึงดันเจี้ยนเพื่อส่งออกหรือส่งกลับจำนวนเดียวแสดงจำนวนชิ้นทองคำที่คนโกงสามารถรวบรวมได้โดยไม่ต้องตื่นขึ้นมอนสเตอร์ใด ๆ
องค์ประกอบของอาร์เรย์มีดังนี้:
- ช่องว่างจะแสดงด้วย
.
การโทรของคุณหรือช่องว่าง - ตำแหน่งเริ่มต้นของ Rogue นั้นถูกแทนด้วยแน่นอน
@
; - ชิ้นส่วนทองจะถูกแทนด้วย
$
; - ผนังถูกแทนด้วย
#
; - มอนสเตอร์จะถูกแทนด้วยตัวละครจาก regexp
[a-zA-Z*&]
ต่อไปนี้:
อาเรย์จะต้องไม่มีตัวอักษรใด ๆ ที่ไม่ได้ระบุไว้ข้างต้นดังนั้นคุณสามารถสันนิษฐานได้ว่าอะไรก็ตามที่ไม่ใช่กำแพงพื้นที่ว่างอันธพาลหรือชิ้นส่วนทองคำเป็นสัตว์ประหลาด
กฎสำหรับการหาเส้นทางคือ:
- คนโกงสามารถเดินผ่านเซลล์ที่ว่างเปล่าหรือเซลล์ที่มีทองคำ
- มันใช้เวลาในการเปลี่ยนไปยังเซลล์ที่อยู่ติดกันหรือแนวทแยงมุม
- การหยิบทองคำขึ้นมาทันที
- พวกอันธพาลไม่สามารถอยู่ใกล้เคียงหรือแนวทแยงมุมกับมอนสเตอร์ได้มากกว่าหนึ่งเทิร์นโดยไม่ต้องตื่นขึ้นมาซึ่งเป็นสิ่งต้องห้าม
- คนโกงสามารถเข้าสู่พื้นที่การรับรู้ของสัตว์ประหลาดได้หลายครั้งสัตว์ประหลาดจะตื่นขึ้นมาก็ต่อเมื่อคนโกงใช้เวลาสองรอบติดต่อกันใกล้ ๆ
กฎอินพุตและเอาต์พุต
คุณสามารถรับอินพุตในรูปแบบที่เหมาะสมรวมถึงอาเรย์สองมิติอาเรย์แบนสตริงหรืออะไรก็ได้ ถ้ามันทำให้ชีวิตของคุณง่ายขึ้นคุณก็อาจต้องใช้มิติของอาเรย์ด้วยเช่นกัน
รับประกันได้ว่าคนโกงจะไม่อยู่ใกล้กับสัตว์ประหลาดในตอนเริ่มต้น
โปรแกรมหรือฟังก์ชั่นเต็มรูปแบบใช้ได้
เกณฑ์การให้คะแนน
นี่คือโค้ดกอล์ฟคะแนนคือจำนวนไบต์ที่คุณส่งโดยมีน้อยกว่าดีกว่า
กรณีทดสอบ
ฉันใช้จุดสำหรับช่องว่างที่นี่เพื่อการอ่านถ้าคุณต้องการคุณอาจใช้ช่องว่าง (ดูด้านบน) นอกจากนี้โปรดทราบว่านี่เป็นเรื่องบังเอิญที่แท้จริงว่าคนโกงอยู่ที่มุมบนซ้ายเสมอรหัสของคุณควรจัดการกับตำแหน่งที่ถูกต้องอื่น ๆ เช่นกัน
1)
@..
.$.
... -> 1
แค่ทดสอบสติ
2)
@....
...g$
..... -> 0
ทดสอบสติอีกครั้ง
3)
@....
...$g
..... -> 1
พวกอันธพาลสามารถคว้าทองคำโดยการย้ายจากด้านซ้าย
4)
@....g..
.......$
........
.....h.. -> 1
คนพาลสามารถซิกแซกระหว่างสัตว์ประหลาดไม่เคยอยู่ใกล้มากกว่าหนึ่งหันใกล้แต่ละ
5)
@....z..
.......$
.....b.. -> 0
กลยุทธ์จากกรณีทดสอบก่อนหน้านี้ไม่ทำงานที่นี่ - พื้นที่ความไวของมอนสเตอร์ทับซ้อนกัน
6)
@$#.
###$
.... -> 1
ทดสอบสติ
7)
@..#..
$.$g.$
...#.. -> 2
เหมือนกัน
8)
@#.d#$
$...##
e.....
..$...
##..$b
.#..g$ -> 3
ในทองคำทั้งหมดที่นี่มีเพียงสามเท่านั้นที่สามารถเข้าถึงได้อย่างปลอดภัย: ทองคำที่อยู่ใกล้ตำแหน่งเริ่มต้นสามารถทำได้โดยการเลื่อนลงหนึ่งตำแหน่งแล้วกลับไปที่ตำแหน่งเริ่มต้น ในการหลบหนีจากมุมซ้ายด้านบนหัวไม้จะต้องเลื่อนแนวทแยงมุมลงสองครั้ง ทองคำที่อยู่ตรงกลางไม่มีความท้าทาย ทองคำชั้นนอกที่ได้รับการปกป้องg
และb
สามารถเคลื่อนย้ายได้ในแนวทแยงมุมจากสถานที่ไปทางด้านขวาของทองคำกลางแล้วถอยหลัง ส่วนที่เหลือไม่สามารถทำได้: ทองด้านบนขวาถูกปิดกั้นโดยกำแพงและทองด้านล่างขวาต้องเลี้ยวสองครั้งในบริเวณที่ไวต่อสัตว์ประหลาด
กรณีทดสอบต่อไปนี้ได้รับการบริจาคอย่างไม่เห็นแก่ตัวโดย mbomb007
9)
12345678
a @....g.D
b .......$
c ......#.
d .....h.. -> 1
อันนี้ช่างยุ่งยาก b4-b5-c6-b7-c8-b8(grab)
เส้นทางคือ
10)
12345678
a @....g.D
b .......$
c .......#
d .....h.. -> 1
[bc]4-c5-b6-c7-b8(grab)
เส้นทางคือ
11)
12345678
a @....g.D
b ......#$
c .......#
d .....h.. -> 1
กำแพงพิเศษไม่ได้เปลี่ยนแปลงอะไรเลยจริงๆ[bc]4-c5-b6-c7-b8(grab)
ยังคงเป็นทางออก
@
เป็นอินพุตที่ถูกต้องหรือไม่