Yeni bir otoyol inşa etmekten sorumlusunuz. Bununla birlikte, dağlık arazilerden geçmektedir ve bu nedenle çok sayıda köprü ve tünele ihtiyaç duymaktadır. Otoyolun kendisi tek bir seviyede kalmalıdır.
Giriş
Dağların aşağıdaki gibi standart girdilerde nasıl göründüğüne dair kaba bir ASCII açıklaması verilmiştir:
/\
/ \
/\ / \
/\ / \/ \
/ \ / \ /\
/ \/ \ / \
_ / \ /\ / \
\ / \ / \ / \ /\
\ / \ / \/ \/ \
\ / \ /
\/ \/
_
İlk sütun işaretleri başlangıç ve yolun seviyesi. Dağ silsilesi bitişiktir ve eğer son bölüm bir köprü olacaksa, eşit sayıda karaktere sahiptir.
Bir giriş satırının asla 100 karakterden uzun olmadığını ve 15 satırdan daha uzun olmadığını varsayabilirsiniz. Her satırın sonunda boşlukla doldurulmuş aynı uzunluktadır. Yol asla bir dağın içinde veya bir köprü olarak başlamaz. Girişteki yol döşemesini takip eden ilk şey aşağı ya da yukarı doğru bir eğimdir.
Çıktı
Çıktı aynı dağ silsilesidir, ancak şimdi daha önce sadece başlangıç olan bir yol olması dışında. Çıktı standart çıktıda verilir.
Bunun için çok sayıda kural var:
Yol, girişte belirtilen yerde başlamalı ve boyunca aynı seviyede kalmalıdır. Kolaylaştırmak için, şuna benzeyen bir dizi hazır yol karosu hazırladık
_
:_______ \ / \/\/
Yol dağlık aralığın en uzak tarafına kadar uzanmalıdır (yani giriş hatlarının uzunluğu yolun ne kadar uzağa gideceğini belirler).
Yolun gitmesi gereken yerde bir dağ olduğunda tüneller açılmalıdır. Tüneller doğrudan dağın içinden geçer ve başlangıçta ve sonunda delikler bırakır (yani bir tünel, dağın yamacının başlangıcında bir kapanış parantezi ve sonunda bir açılış parantezi ile değiştirilir).
Tüneller, dağda genellikle tavanı olan bir tüneli terk eder. Hazır taş döşemelerimiz neyse ki tavanı güçlendirmek için kullanılabilir, böylece tünel çökmez (tünelin üzerindeki çizginin tüneli
_
güçlendirmek için kullanması gerekir):/\ / \ /____\ ___)______(__ \/ \/
Tünel, dağın üzerinde yeterince yüksek olmadığında takviye edilmesine gerek yoktur. Bana da çok garip geliyor ama bana, bu durumda yerleştirilmiş olan yol kiremitlerinin, bu durumda aralıklı olsa bile tutabilecek kadar güçlü olduğu söylendi (tünelin tavanının hemen üstünde bir eğim olduğunda hiçbir tünel tavanı çekilmiyor):
/\ /\/__\ ___)______(__ \/ \/
Yolun uçurumdan geçmesi gerektiğinde köprülere ihtiyaç vardır. Kısa köprüler için, hazır yol döşemeleri yeterince güçlüdür, ancak köprünün başında ve sonunda hala biraz desteğe ihtiyaç duyuyor (köprünün altındaki ilk aşağı eğim ve son yukarı eğim
Y
, köprü için bir destek kirişi olacak şekilde değiştirildi) ):_____ Y Y \/
Daha uzun köprüler ek desteğe ihtiyaç duyar. Uzun bir köprü, üst üste altıdan fazla desteklenmeyen yol döşemesine sahip olan köprüdür. Uzun köprüler merkezinde bir direk gerekir. Sütunlar kolayca şuna benzer bizim önceden oluşturulmuş ayağı kirişlerle inşa edilir:
|
. Her sütun iki taneye ihtiyaç duyar ve uçurumun dibine kadar uzanır:_____________________________ Y || Y \ /\ || /\ /\/ \ /\ / \||/ \ /\/ \/ \/ \/ \/
Girdi, sadece tüm dağlık aralığın bir kısmını temsil ettiğinden, çevre yolunun inşa edilmesi gereken, bir köprü veya tünelin ortasında aniden sona erebilir. Uzun köprü kuralı son bölüm için hala geçerlidir ve verilen girdilerin dışındaki ilk bölümün köprüyü tekrar desteklediğini varsayabilirsiniz.
Yukarıdaki kurallara uyarak girişimiz için aşağıdakileri elde ederiz:
/\
/ \
/\ / \
/\ / \/ \
/ \ / \ /\
/____\/______________\ /__\
_________)______________________(________)(____)____(______
Y Y Y Y Y Y Y YY
\ / \ / \/ \/ \
\ / \ /
\/ \/
Karakter sayısına göre en kısa kod kazanır. Satırlardaki boşluk boşlukları doğrulama için yoksayılır.
Örnek giriş 1
_
\ /\
\ / \
\ / \
\ /\ / \ /\ /
\ /\ / \ / \ /\ /\/ \ /
\ / \ / \/ \ / \/ \/\ /
\/ \ / \ / \/
\ / \/
\/
Örnek çıktı 1
____________________________________________________________
Y || YY ||
\ || / \ ||
\ || / \ ||
\ || /\ / \ || /\ /
\ /\ || / \ / \ /\ |/\/ \ /
\ / \ || / \/ \ / \/ \/\ /
\/ \ || / \ / \/
\||/ \/
\/
Örnek giriş 2
/\ /\
/ \/ \ /
/\ / \ /\ /
/\ / \ / \/ \ /
/ \ / \/\ / \ /\ /
/ \/ \ / \ / \ /
_/ \ / \/ \/
\ /
\ /\/
\ /\ /
\/ \ /
\ /
\/
Örnek çıktı 2
/\ /\
/ \/ \ /
/\ / \ /\ /
/\ / \ / \/ \ /
/ \ / \/\ / \ /\ /
/____\/________\ /__________________\ /__\ /____
_)________________(__________________)____________________()____()_____
Y || Y
\ || /\/
\ /\ || /
\/ \|| /
\| /
\/
Not
Referans çözümlerle karşılaştırmak için çıktıdaki boşluklar dikkate alınmaz.
Kazanma koşulu
Golfta geleneksel olduğu gibi en kısa kod kazanır. Beraberlik durumunda, önceki çözüm kazanır.
Test durumları
Aynı test durumlarını içeren iki test komut dosyası vardır:
Çağırma her iki durumda da geçerli: <test script> <my program> [arguments]
Örneğin ./test ruby bridges.rb
veya ./test.ps1 ./bridges.exe
.
Başka bir not
Bu görev, 2011-W24 döneminde üniversitemde düzenlenen golf yarışmasının bir parçasıydı. Yarışmacılarımızın puanları ve dilleri aşağıdaki gibidir:
- 304 - Perl
- 343 - C
- 375 - C
- 648 - Python
Kendi çözümümüz (Ventero sayesinde)
- 262 - Yakut