您负责建立新的高速公路。但是,它穿过山区,因此需要许多桥梁和隧道。高速公路本身应保持在单一水平。
输入值
您将获得有关标准输入中的山脉外观的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 –红宝石