คุณมีหน้าที่สร้างทางด่วนใหม่ อย่างไรก็ตามมันนำไปสู่ดินแดนที่เป็นภูเขาดังนั้นจึงจำเป็นต้องมีสะพานและอุโมงค์จำนวนมาก ฟรีเวย์ควรอยู่ในระดับเดียว
อินพุต
คุณจะได้รับคำอธิบาย ASCII คร่าวๆว่าลักษณะของภูเขาบนอินพุตมาตรฐานเช่นอะไรดังต่อไปนี้:
/\
/ \
/\ / \
/\ / \/ \
/ \ / \ /\
/ \/ \ / \
_ / \ /\ / \
\ / \ / \ / \ /\
\ / \ / \/ \/ \
\ / \ /
\/ \/
_
ในเครื่องหมายคอลัมน์แรกจุดเริ่มต้นและระดับของถนน ช่วงของภูเขานั้นต่อเนื่องกันและหากส่วนสุดท้ายจะเป็นสะพานมันจะมีจำนวนตัวอักษรที่เท่ากัน
คุณอาจสันนิษฐานว่าบรรทัดอินพุตไม่ยาวเกิน 100 ตัวอักษรและมีความยาวไม่เกิน 15 บรรทัด ทุกบรรทัดมีความยาวเท่ากันซึ่งอาจจะเป็นเบาะอวกาศในตอนท้าย ถนนไม่เคยเริ่มภายในภูเขาหรือเป็นสะพาน สิ่งแรกที่ติดตามกระเบื้องถนนในอินพุตนั้นอาจเป็นทางลาดเอียงขึ้นลง
เอาท์พุต
เอาท์พุทเป็นเทือกเขาเดียวกันยกเว้นตอนนี้มีถนนที่ก่อนหน้านี้เป็นเพียงจุดเริ่มต้น เอาต์พุตถูกกำหนดบนเอาต์พุตมาตรฐาน
สำหรับสิ่งนี้มีกฎมากมาย:
ถนนจะต้องเริ่มต้นจากสถานที่ที่ระบุในทางเข้าและยังคงอยู่ในระดับเดิมตลอด เพื่อให้ง่ายขึ้นเราได้เตรียมแผ่นกระเบื้องถนนที่ทำไว้ล่วงหน้าจำนวนหนึ่งซึ่งมีลักษณะดังนี้
_
:_______ \ / \/\/
ถนนจะต้องขยายไปถึงจุดสิ้นสุดสุดของเทือกเขา (เช่นความยาวของเส้นอินพุตกำหนดว่าถนนไปไกลแค่ไหน)
ต้องเจาะอุโมงค์ทุกครั้งที่มีภูเขาเป็นที่ต้องการของถนน อุโมงค์เดินทะลุผ่านภูเขาและออกจากหลุมที่จุดเริ่มต้นและจุดสิ้นสุด (เช่นอุโมงค์แทนที่ความลาดชันของภูเขาด้วยวงเล็บปิดที่จุดเริ่มต้นและวงเล็บเปิดที่ปลาย)
อุโมงค์ออกจากกันอุโมงค์ในภูเขาซึ่งมักจะมีเพดาน โชคดีที่กระเบื้องถนนที่สร้างไว้ล่วงหน้าของเราสามารถนำมาใช้เพื่อเสริมความแข็งแกร่งของเพดานเพื่อให้อุโมงค์ไม่ยุบตัว (เส้นเหนืออุโมงค์ต้องใช้
_
ในการเสริมกำลังอุโมงค์):/\ / \ /____\ ___)______(__ \/ \/
อุโมงค์ไม่จำเป็นต้องเสริมเมื่อภูเขาไม่สูงพอ มันฟังดูแปลกสำหรับฉันเช่นกัน แต่ฉันได้รับการบอกว่าแผ่นกระเบื้องถนนที่ทำไว้แล้วมีความแข็งแรงพอที่จะจับแม้ในกรณีที่เว้นระยะไว้ (ไม่มีเพดานอุโมงค์ถูกดึงเมื่อมีความลาดชันเหนืออุโมงค์):
/\ /\/__\ ___)______(__ \/ \/
สะพานมีความจำเป็นเมื่อใดก็ตามที่ถนนต้องการข้ามช่องว่าง สำหรับสะพานสั้นแผ่นกระเบื้องที่ทำไว้ล่วงหน้ามีความแข็งแรงเพียงพอ แต่ยังต้องการการรองรับเล็กน้อยที่จุดเริ่มต้นและจุดสิ้นสุดของสะพาน (ความลาดชันลงใต้สะพานแรกและความลาดชันขึ้นด้านบนสุดท้ายจะถูกแทนที่ด้วย
Y
ดังนั้นจึงมีคานรองรับสำหรับสะพาน ):_____ Y Y \/
สะพานที่ยาวขึ้นต้องการการสนับสนุนเพิ่มเติม สะพานยาวนั้นเป็นสะพานที่มีแผ่นกระเบื้องถนนที่ไม่รองรับมากกว่าหกแผ่นในหนึ่งแถว สะพานยาวต้องมีเสาอยู่ตรงกลาง
|
เสาหลักที่ถูกสร้างขึ้นได้อย่างง่ายดายด้วยคานเสาที่สร้างไว้ล่วงหน้าของเราซึ่งมีลักษณะเช่นนี้ แต่ละเสาต้องการสองเสาและขยายลงไปที่ก้นเหว:_____________________________ Y || Y \ /\ || /\ /\/ \ /\ / \||/ \ /\/ \/ \/ \/ \/
เนื่องจากข้อมูลป้อนเข้านั้นเป็นเพียงส่วนหนึ่งของเทือกเขาทั้งหมดที่จำเป็นต้องมีการสร้างทางด่วนดังนั้นอาจสิ้นสุดทันทีกลางสะพานหรืออุโมงค์ กฎบริดจ์ยาวยังคงใช้กับส่วนสุดท้ายและคุณสามารถสันนิษฐานได้ว่าส่วนแรกที่อยู่นอกเหนือจากอินพุตที่ให้มาสนับสนุนบริดจ์อีกครั้ง
ตามกฎข้างต้นเราจะได้รับสิ่งต่อไปนี้สำหรับข้อมูลของเรา:
/\
/ \
/\ / \
/\ / \/ \
/ \ / \ /\
/____\/______________\ /__\
_________)______________________(________)(____)____(______
Y Y Y Y Y Y Y YY
\ / \ / \/ \/ \
\ / \ /
\/ \/
รหัสที่สั้นที่สุดตามจำนวนตัวอักษรชนะ ช่องว่างต่อท้ายในบรรทัดจะถูกละเว้นสำหรับการตรวจสอบ
ตัวอย่างอินพุต 1
_
\ /\
\ / \
\ / \
\ /\ / \ /\ /
\ /\ / \ / \ /\ /\/ \ /
\ / \ / \/ \ / \/ \/\ /
\/ \ / \ / \/
\ / \/
\/
ตัวอย่างผลลัพธ์ 1
____________________________________________________________
Y || YY ||
\ || / \ ||
\ || / \ ||
\ || /\ / \ || /\ /
\ /\ || / \ / \ /\ |/\/ \ /
\ / \ || / \/ \ / \/ \/\ /
\/ \ || / \ / \/
\||/ \/
\/
ตัวอย่างอินพุต 2
/\ /\
/ \/ \ /
/\ / \ /\ /
/\ / \ / \/ \ /
/ \ / \/\ / \ /\ /
/ \/ \ / \ / \ /
_/ \ / \/ \/
\ /
\ /\/
\ /\ /
\/ \ /
\ /
\/
ตัวอย่างผลลัพธ์ 2
/\ /\
/ \/ \ /
/\ / \ /\ /
/\ / \ / \/ \ /
/ \ / \/\ / \ /\ /
/____\/________\ /__________________\ /__\ /____
_)________________(__________________)____________________()____()_____
Y || Y
\ || /\/
\ /\ || /
\/ \|| /
\| /
\/
บันทึก
ช่องว่างต่อท้ายในเอาต์พุตจะถูกละเว้นสำหรับการเปรียบเทียบกับโซลูชันการอ้างอิง
สภาพการชนะ
รหัสที่สั้นที่สุดชนะเช่นเดียวกับในกอล์ฟ ในกรณีที่เสมอกันการแก้ปัญหาก่อนหน้านี้ชนะ
กรณีทดสอบ
มีสองสคริปต์ทดสอบที่มีกรณีทดสอบเหมือนกัน:
การร้องขออยู่ในทั้งสองกรณี: <test script> <my program> [arguments]
, ./test ruby bridges.rb
หรือ./test.ps1 ./bridges.exe
หรือ
หมายเหตุอื่น
งานนี้เป็นส่วนหนึ่งของการแข่งขันกอล์ฟที่จัดขึ้นที่มหาวิทยาลัยของฉันในช่วงปี 2011-W24 คะแนนและภาษาของผู้แข่งขันของเรามีดังนี้:
- 304 - Perl
- 343 - C
- 375 - C
- 648 - Python
วิธีการแก้ปัญหาของเราเอง (ขอบคุณ Ventero) คือ
- 262 - ทับทิม