หลังจากขี่เรือแคนูที่ร้ายกาจของคุณแล้วคุณก็ตกลงไปที่น้ำตกที่ปลายน้ำเชี่ยว เรือแคนูของคุณระเบิด แต่คุณรอดชีวิตจากการระเบิด อย่างไรก็ตามการเดินทางทางแม่น้ำของคุณก็หมดไปจากแผนที่ตอนนี้คุณพบว่าตัวเองหลงทางในป่า โชคดีที่คุณยังมีทักษะการเขียนโปรแกรมดังนั้นคุณตัดสินใจที่จะแกะสลักโปรแกรมไว้ที่ด้านข้างของต้นไม้เพื่อช่วยคุณค้นหาเส้นทางผ่านป่า อย่างไรก็ตามมีพื้นที่ผิวบนต้นไม้ไม่มากดังนั้นคุณต้องทำให้โปรแกรมของคุณสั้นที่สุด
ฟอเรสต์สามารถอธิบายได้ว่าเป็นตัวอักษรnโดยn( n > 5) ของอักขระซึ่งจะประกอบด้วยตัวอักษรตัวพิมพ์เล็กa-zเท่านั้น ป่าตัวอย่าง:
anehcienwlndm
baneiryeivown
bnabncmxlriru
anhahirrnrauc
riwuafuvocvnc
riwnbaueibnxz
hyirorairener
ruwiiwuauawoe
qnnvcizdaiehr
iefyioeorauvi
quoeuroenraib
cuivoaisdfuae
efoiebnxmcsua
คุณอาจสังเกตเห็นว่าในป่านี้มีเส้นทแยงมุมของaตัวละครที่วิ่งผ่านจากมุมบนซ้ายไปยังมุมขวาล่าง นี่คือ "เส้นทาง" ผ่านป่าซึ่งจะพาคุณไปที่ไหนสักแห่งถ้าคุณทำตาม งานของคุณคือการเขียนโปรแกรมที่จะหาเส้นทางเอกพจน์ ตอนนี้ฉันจะอธิบายสิ่งที่สื่อความหมายถึง "เส้นทาง" ในความท้าทายนี้โดยเฉพาะ
"เส้นทาง" ในการท้าทายนี้ถูกกำหนดให้เป็นเส้นที่คล้ายกับเส้นทางซึ่งอาจถูกสร้างขึ้นด้วยอัลกอริทึม Bresenhamแต่ด้วยข้อกำหนดเพิ่มเติมที่:
- บรรทัดต้องมีความยาวอย่างน้อย 6 อักขระ
- แต่ละ collinear (ติดกันอย่างสมบูรณ์) กลุ่มของอักขระในบรรทัดจะต้องมีความยาวเท่ากัน
- มันจะเริ่มที่ขอบหนึ่งของป่าและจบที่ขอบตรงข้าม (ดูความคิดเห็นของฉันที่นี่เพื่อทำอย่างละเอียด)
หากต้องการอธิบายข้อกำหนดที่สองให้ชัดเจนยิ่งขึ้นให้พิจารณาบรรทัดต่อไปนี้:
aaa
aaa
aaa
aaa
aaa
บรรทัดนี้ประกอบด้วย collinear "เซ็กเมนต์" ของตัวละครแต่ละตัวมีความยาวสามตัว มันมีคุณสมบัติเป็นเส้นทาง พิจารณาบรรทัดนี้:
a
aa
a
aa
a
aa
บรรทัดนี้ประกอบด้วย collinear "เซ็กเมนต์" ที่ไม่ได้มีความยาวเท่ากันทุกตัวอักษร (บางส่วนมีความยาว 1 อักขระและบางส่วนเป็น 2) ดังนั้นสิ่งนี้จึงไม่ถือว่าเป็นเส้นทาง
โปรแกรมของคุณให้แผนที่ของฟอเรสต์ระบุอักขระที่ใช้ในเส้นทาง อินพุตคือสิ่งที่มั่นใจได้ (เช่นอาร์กิวเมนต์บรรทัดคำสั่ง STDIN prompt()เป็นต้น) ไม่สามารถกำหนดค่าเริ่มต้นล่วงหน้าให้เป็นตัวแปรได้ ส่วนแรกของอินพุตเป็นจำนวนเต็มเดียวที่nแสดงขนาดของฟอเรสต์ (ฟอเรสต์เป็นจตุรัสเสมอ) หลังจากนั้นเป็นช่องว่างและจากนั้นทั้งฟอเรสต์เป็นสตริงเดียว ตัวอย่างเช่นฟอเรสต์ตัวอย่างจะถูกนำเสนอเป็นอินพุตเช่นนี้:
13 anehcienwlndmbaneiryeivownbnabncmxlriruanhahirrnraucriwuafuvocvncriwnbaueibnxzhyirorairenerruwiiwuauawoeqnnvcizdaiehriefyioeorauviquoeuroenraibcuivoaisdfuaeefoiebnxmcsua
ผลลัพธ์สำหรับสิ่งนี้จะเป็น:
a
aเนื่องจากเส้นทางถูกสร้างขึ้นโดยใช้ตัวอักษร จะมีเพียงเส้นทางเดียวในป่า นี่คือรหัสกอล์ฟดังนั้นจำนวนอักขระต่ำสุดชนะ หากคุณมีคำถามให้ถามในความคิดเห็น