Ви відповідальні за будівництво нової автостради. Однак він веде через гірські землі і тому потребує численних мостів і тунелів. Сама автострада повинна залишатися на одному рівні.
Вхідні дані
Вам надається приблизний опис 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 -24. Оцінки та мови наших учасників конкурсу були такими:
- 304 - Перл
- 343 - С
- 375 - С
- 648 - Пітон
Наше власне рішення (завдяки Вентеро) було
- 262 - Рубі