입력:
- stdin 또는 prompt를 통해 공급되는 일련의 정수를 얻습니다.
- 이 시리즈의 모든 정수 쌍은 건물의 너비 [유효 범위 : 1..10] 및 높이 [유효 범위 : 0..10]를 나타냅니다.
- 입력이 올바른 것으로 가정하십시오.
샘플 입력 (두 번째 줄은 데모 목적으로 만 사용) :
12 2112 1 3 1 2 2 1 WHWHWHWHWHWHWHH
해당 샘플 출력 :
______ / ______ / | | | | __ | | / __ / | __ | | | | __ / __ / | | | | / __ / | | | | __ | | | | | ______ | | / __ / | | | | | / ______ / | | | | | _ | | | | | | | _o_ | _o_ | / __ | _o _____ | _o_ | _o_ | _o _____ | / ------------------------------------- ------------- -------------------------------------
규칙 :
건물
- 기본 빌딩 블록은 다음과 같습니다 (1W, 1H)
__ / __ / | (이 질문에서는 기본 큐브가 빌려 온다 : | | | http://stackoverflow.com/questions/1609702/code-golf-playing-cubes) | ___ | /
우리의 관점은 (ahum) ~ 3D이므로 주변 건물은 다른 건물의 일부를 숨길 수 있습니다. 건물은 왼쪽에서 오른쪽으로 '논리적으로'렌더링됩니다.
첫 번째 건물 앞에는 두 개의 공백이 있습니다.
WIDTH와 HEIGHT를 기본 큐브의 치수에 적용하여 모든 건물을 렌더링합니다 (제공된 샘플 출력을 살펴보십시오!). 참조 : 왼쪽에서 오른쪽으로 '벽'에 이르는 문자 수 (W> 1 인 건물의 경우) : (W * 5)-(W-1).
높이가 0보다 큰 건물에는 문이 하나 있습니다 (
o
문자로 표시되며 '맨 아래'행의 '왼쪽'벽에서 두 문자에 위치 함).
도로 :
- 도로는 '상단', '중간'및 '하단'이라고하는 세 부분으로 구성됩니다.
- 'top'부분과 'bottom'부분은 'top'부분 앞에 두 개의 공백이 있다는 사실과는 동일합니다.
- 중간 부분 앞에는 공백이 하나 있으며 다음 패턴의 반복으로 구성됩니다.
'-'
- 길이는 결합 된 건물의 총 너비에 의해 결정됩니다. 도로의 가장 오른쪽 부분은 '마지막'건물의 '오른쪽'벽의 위치와 일치합니다.
수상자 :
이것은 코드 골프입니다! 우승자는 가장 짧은 솔루션 (소스 코드 수 기준)을 가진 유자격 참가자입니다. 소스는 인쇄 가능한 ASCII 문자로만 구성되어야합니다. 즐기세요!
(무작위) 창문, 자동차 또는 보행자에 대한 가상 보너스 포인트.
사양이 명확하지 않은 경우 언제든지 의견을 말하십시오!
@user unknown : 실제로 규칙에 작은 오타가있었습니다. 지금 고쳐야합니다, 감사합니다!
—
ChristopheD
후행 공백이 허용됩니까? 당신은 예제에 일부가있는 것 같아서 그렇게 가정합니다.
—
피터 테일러
@ 피터 테일러 : 후행 공백이 허용됩니다.
—
ChristopheD
도로 부분 3,
—
mellamokb
'- '
두 공간이 있어야 합니까? 편집 : 아, 두 공백은 표시되지 않습니다 : P. ASCII 255 (비 공백 공백, 숫자 키패드의 ALT + 255)를 사용하거나 여기 내 주석에서 복사하여 붙여 넣어 여러 공백을 표시 할 수 있습니다. 오어 ... 당신은 단지 그것의 반복의 말을 대신 할 수 ' - '
:)
높이 유효 범위가 실제로는 [ 0 ..10] 인 것 같습니다. 또한
—
mellamokb
but you must not enforce this
3)에서 무엇을 의미 합니까? IMO, 점수가 올라가면 모든 가정을 악용 할 수 있습니다. 따라서 문자 수를 줄이면 총 너비가 80보다 작은 경우 에만 작동하는 코드를 작성할 수 있습니다. 예를 들어, 너비가 80 인 디스플레이 버퍼 배열에 출력을 쓰면 더 높은 총 너비에서 충돌이 발생합니다. 너비를 지원하려면 가정을하지 마십시오. 두 가지를 모두 가질 수는 없습니다. P