입력
- 던전의 벽을 나타내는 이진 행렬
- 던전 내 플레이어 의 위치
- 플레이어가 현재 향하고 있는 방향 (0 = 북쪽, 1 = 동쪽, 2 = 남쪽, 3 = 서쪽)
산출
의 ASCII 아트로, 플레이어의 시야에있는 벽의 의사 3D 표현 문자.
다음은 가능한지도 프레임과 해당지도 및 나침반과 함께지도를 끊는 데 도움이되는 몇 가지 가능한 출력 프레임입니다.
사양
시야
플레이어는 자신의 시야에 에서 레이블이 지정된 벽이 있습니다 . 다음은 가능한 모든 방향에서 플레이어를 기준으로 한 벽의 위치 (노란색)입니다.
벽 그리기
벽은 이전에 그린 부분이 더 가까운 벽으로 덮어 쓰기 될 수 있으므로 에서 까지이 순서대로 그려 져야합니다. 최종 결과가 동일한 경우에는 물론 다르게 구현할 수 있습니다.
전체 출력은 7 개 문자 구별 그려진 : " "
, "'"
, "."
, "|"
, "-"
, "_"
및 ":"
.
이 챌린지의 바디에있는 벽의 모양을 자세히 설명하면 벽이 너무 길어지기 때문에 대신 다음 TIO 링크에 제공됩니다.
주어진 벽에 속하지 않은 문자 "?"
는이 다이어그램에서 로 표시됩니다 . 그것들은 전혀 그려지지 않은 '투명한'문자로 취급되어야합니다. 반면, 벽 내의 모든 공간은 '단단한'공간이며 이전에 그려진 다른 문자를 덮어 써야합니다.
규칙
입력 정보
- 당신은 걸릴 수 있습니다 , , 및 합리적인 형식으로.
- 0 인덱스 또는 1 인덱스 좌표를 사용할 수 있습니다.
- 길 찾기에 4 가지 값을 선택할 수 있습니다.
- 행렬은 이상이어야 합니다.
- 가장자리에 항상 주변 벽이 있다고 가정 할 수 있습니다.
- 플레이어는 빈 사각형에 있어야합니다.
- 입력이 유효합니다.
출력에 대하여
- 벽은 설명대로 정확하게 그려야합니다.
- 그러나 단일 문자열, 문자열 배열, 문자 매트릭스 등의 출력 형식도 유연합니다.
- 선행 및 후행 공백은 일관된 한 허용됩니다.
이것은 code-golf 입니다.
테스트 사례
모든 테스트 사례는 다음 매트릭스를 사용합니다.
[ [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ],
[ 1, 0, 1, 1, 1, 0, 0, 0, 0, 1 ],
[ 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ],
[ 1, 0, 0, 0, 0, 0, 1, 1, 0, 1 ],
[ 1, 0, 0, 1, 0, 0, 0, 1, 0, 1 ],
[ 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 ],
[ 1, 1, 1, 1, 0, 0, 0, 0, 0, 1 ],
[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 ],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ]
다음 입력은 이 왼쪽 상단 모서리를 가리키는 0 인덱스 좌표 를 사용합니다.
x=3, y=3, d=0
x=6, y=4, d=3
x=4, y=4, d=1
x=1, y=5, d=2
x=7, y=7, d=3
x=6, y=6, d=1
x=8, y=1, d=2
x=7, y=6, d=1
예상 출력 :
------------------------------ ------------------------------
x=3, y=3, d=0: x=6, y=4, d=3:
------------------------------ ------------------------------
__ __ '. .'
|'. .'| | |
| '.--------------.' | |----. |
| | | | | | '.--------. |
| | | | | | | | |
| | | | | | | | |
| | | | | | .'--------' |
| .'--------------'. | |----' |
__|.' '.|__ | |
.' '.
------------------------------ ------------------------------
x=4, y=4, d=1: x=1, y=5, d=2:
------------------------------ ------------------------------
.' __ ________________________ .'
| | |
-------. .----| | |
| '.--------.' | | | |
| | | | | | |
| | | | | | |
| .'--------'. | | | |
-------' '----| | |
| __|________________________|
'. '.
------------------------------ ------------------------------
x=7, y=7, d=3: x=6, y=6, d=1:
------------------------------ ------------------------------
'. '.
|'. |'.
| '. | '.
| | '. .- | |--.--------.--------.-
| | |: :| | | | | |
| | |: :| | | | | |
| | .' '- | |--'--------'--------'-
| .' | .'
|.' |.'
.' .'
------------------------------ ------------------------------
x=8, y=1, d=2: x=7, y=6, d=1:
------------------------------ ------------------------------
'. __ '.
|'. .'| |
| '. .' | |----.--------------.-------
| | '. .' | | | | |
| | |: :| | | | | |
| | |: :| | | | | |
| | .' '. | | | | |
| .' '. | |----'--------------'-------
|.' '.|__ |
.' .'
관련 도전 :
2013 년의이 과제 는 밀접한 관련이 있습니다. 그러나 출력 기준이 훨씬 느슨한 다른 승격 기준 (코드 도전)이 있으며 대화식 I / O가 필요합니다.