문자열을 입력으로 수신하고 입력이 ASCII 트리 인 경우 출력 또는 리턴하는 프로그램 또는 함수를 작성해야합니다.
_
\/ /
\_/
|
|
ASCII 트리는 문자 / \ | _ spaces
와 로 구성됩니다 newlines
.
공백이 아닌 문자는 셀의 두 가장자리 포인트를 선 세그먼트로 연결합니다.
/
왼쪽 하단과 오른쪽 상단을 연결합니다\
오른쪽 하단과 왼쪽 상단을 연결합니다|
아래쪽 가장자리와 위쪽 가장자리의 중간 지점을 연결합니다_
왼쪽 하단 및 오른쪽 하단 모서리와 하단 가장자리의 중간 점을 연결합니다
(참고로이 방법 |
만 연결할 수 |
또는 _
은 불가능 /
하거나 \
).
다음 규칙이 적용되는 경우 ASCII 그림을 트리라고합니다.
- 정확히 한 문자의 정확히 한 점 (루트)이 마지막 행의 아래쪽 가장자리에 닿습니다.
다음을 통해 라인 세그먼트의 어느 지점 에나 도달 할 수 있습니다.
- 루트에서 시작
- 선분 만 사용
- 아래쪽으로 향하지 마십시오 (아래쪽으로도)
입력
- 문자로 구성
/ \ | _ space
되고newline
공백이 아닌 문자를 하나 이상 포함 하는 문자열 입니다. 두 가지 입력 형식을 선택할 수 있습니다.
- 트리 주변에 불필요한 공백이 없습니다 (예제 참조).
- 모든 행을 같은 길이로 만들기 위해 행의 오른쪽에 공백을 제외하고 (예에서 볼 수 있듯이) 나무 주위에 불필요한 공백이 없습니다.
후행 줄 바꿈은 선택 사항입니다.
산출
예
유효한 나무 :
|
_
\/ /
\_/
|
|
/ / \/
\ \____/
\/
/
/
\___/
/ \
\___/
|
|
__/
_/
/
____
\ ___
\ \/
\/\_____/
\/ \/
\__/
|
|
유효하지 않은 트리 (입력의 일부가 아닌 추가 설명 포함) :
\/
\_______/
\__ /
| \_/ <- reachable only on with downward route
|
_ <- multiple roots
\/ <- multiple root characters
/\ <- multiple roots
| <- unreachable part
|
__/
/ <- unreachable parts
|
\____/
| | <- multiple roots
_\__/ <- unreachable parts (_ and \ don't connect to each other)
|
이것은 코드 골프이므로 가장 짧은 항목이 이깁니다.