새로운 고속도로 건설은 귀하의 책임입니다. 그러나 산악 지대를 통과하기 때문에 수많은 다리와 터널이 필요합니다. 고속도로 자체는 단일 수준으로 유지되어야합니다.
입력
다음과 같이 표준 입력에서 산이 어떻게 보이는지에 대한 대략적인 ASCII 설명이 제공됩니다.
/\
/ \
/\ / \
/\ / \/ \
/ \ / \ /\
/ \/ \ / \
_ / \ /\ / \
\ / \ / \ / \ /\
\ / \ / \/ \/ \
\ / \ /
\/ \/
_
첫 번째 열에 표시의 시작과 도로의 수준. 산맥은 연속적이며 마지막 구간이 다리 일 경우 짝수의 문자를 갖습니다.
입력 줄이 100자를 넘지 않으며 15 줄을 넘지 않는다고 가정 할 수 있습니다. 모든 줄의 길이는 끝 부분에 공백으로 채워질 수 있습니다. 도로는 산이나 다리로 시작하지 않습니다. 입력에서 도로 타일 다음에 오는 첫 번째 사항은 경사 또는 하향입니다.
산출
이전에 시작된 도로가 있다는 점을 제외하면 산출물은 동일한 산맥입니다. 출력은 표준 출력으로 제공됩니다.
이를 위해 수많은 규칙이 있습니다.
도로는 입력에 표시된 장소에서 시작해야하며 전체적으로 동일한 수준을 유지해야합니다. 보다 쉽게하기 위해 다음과 같은 미리 만들어진 여러 도로 타일을 준비했습니다
_
._______ \ / \/\/
도로는 산맥의 끝까지 뻗어 있어야합니다 (즉, 입력 선의 길이는 도로의 거리를 나타냅니다).
산이 길을 갈 필요가있을 때마다 터널을 뚫어야합니다. 터널은 산을 똑바로 통과하여 시작과 끝에서 구멍을 남깁니다 (즉, 터널은 시작시 닫는 괄호와 끝의 괄호로 산의 경사를 대체합니다).
터널은 보통 천장이있는 산의 터널을 떠납니다. 우리의 미리 만들어진 도로 타일은 운 좋게도 천장을 강화하여 터널이 무너지지 않도록 사용할 수 있습니다 (터널 위의 선은 터널
_
을 강화하는 데 사용해야 합니다)./\ / \ /____\ ___)______(__ \/ \/
산이 충분히 높지 않은 경우 터널을 보강 할 필요가 없습니다. 나에게도 이상하게 들리지만 사전 제작 된 도로 타일은 그 경우 간격이있을 때도 견딜 수있을 정도로 강하다고 들었습니다 (터널 바로 위에 경사가있을 때 터널 천장이 그려지지 않음).
/\ /\/__\ ___)______(__ \/ \/
도로가 틈을 지나야 할 때마다 다리가 필요합니다. 짧은 교량의 경우 사전 제작 된 도로 타일은 충분히 강하지 만 교량의 시작과 끝에서 약간의지지가 필요합니다 (교량 아래의 첫 번째 아래쪽 경사와 마지막 위쪽 경사는
Y
교량에 대한지지 빔이 있도록 대체 됨) ) :_____ Y Y \/
더 긴 다리는 추가 지원이 필요합니다. 긴 다리는 연속으로 6 개 이상의 지원되지 않는 도로 타일이있는 다리입니다. 긴 다리는 중앙에 기둥이 필요합니다. 기둥은 다음과 같은 사전 제작 기둥 기둥으로 쉽게 만들 수 있습니다
|
. 각 기둥에는 그 중 두 개가 필요하며 구멍의 바닥까지 뻗어 있습니다._____________________________ 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 – 펄
- 343 – C
- 375 – C
- 648 – 파이썬
우리 자신의 솔루션 (Ventero 덕분)
- 262 – 루비