보드가 주어지면, 가장 짧은 프로그램이나 함수를 작성하여 플레이어에게 보이는 캐릭터를 표시하거나 반환하십시오. 시야를 막는 캐릭터를 가로 지르지 않고 캐릭터와 플레이어 사이에 선을 그릴 수 있다면 캐릭터가 시야에 들어옵니다.
입력:
@플레이어의 위치를 나타냅니다. 입력에는이 중 하나만 있습니다.- 정규식과 일치하는 모든 문자는
[#A-Z]비전을 차단합니다. - 일치하는 모든 문자
[ a-z]는 비전을 허용합니다. - 유효하지 않은 문자가 없습니다
- 당신은 직사각형 입력을 보장합니다
선은 다음과 같이 정의됩니다.
- 벡터를 크기와 방향으로 정의
- 방향은 N, NE, E, SE, S, SW, W, NW 중 하나입니다.
- 크기는 그 방향을 따라 셀 수있는 문자 수입니다
- 초기 벡터를 d 1 이라고하자 . 두 번째 벡터는 d 2 라고합니다
- d 1 또는 d 2 중 하나의 크기는
1; 다른 하나는 크기에 관계없이 - d 1 방향은 d 2 방향에 인접해야합니다 (예 : N 및 NE)
행은 d 1 , d 2 , d 1 , d 2 ... 를 적용하여 표시된 경로를 따라 모든 문자로 정의됩니다 .
샘플 라인 ( .s로 제공) :
d 1 = (크기 : 4, 방향 : E)
d 2 = (크기 : 1, 방향 NE)
.....
.....
.....
@....
산출:
- 올바른 위치에있는 각 보이는 문자는
.공백을 대체합니다. - 보이지 않는 각 문자를위한 공간입니다.
샘플 입력 :
@
K
J
L
o
해당 출력 :
@.........
....K.....
.J.....
..........
.. .L.....
.. . ....
... .. ...
... .. ..
... . .
.... ..
샘플 입력 :
B###M# by
#Q # Zmpq
# # aaa
@ m #
# ##P#
# ####
# ####
#M ###
######
해당 출력 :
.B #M
.# .. Z pq
.#.#.aaa..
@..m.#
#.##P#
.#
.#
M.
#
샘플 입력 :
w
O l gg rT
QQL Ag #b
qqqqq XqQ
x V# f@aa
Y aaa
uU E l TaKK
e dd FF d opi
e d
해당 출력 :
.......... .....
......... .....
O..l...gg..rT
...QQL......Ag..#b..
...qqqqq.........XqQ
#.f@aa......
Y........aaa.....
...uU..E..l.TaKK....
d..FF.d.op
.... .d. ...
3
박쥐, 모든 종류의 곰팡이, 곰팡이, 뱀, 심지어는 망령이 시야를 가리지 만 거대한 모방, 언덕 오크, 마조 돈, 모든 종류의 다른 생물 또는 불 소용돌이도 그렇지 않습니까?
—
John Dvorak
@ JanDvorak 나는 게으르고 차단을 위해 대문자를 선택했습니다. 키가 큰 몬스터 대 짧은 몬스터의 종류; 어느 쪽을 볼 수 있을까요? 네
—
저스틴
나는 양자 역학에 대해 잘 모르지만 박쥐와 그놈 미라는 쉬운 거래일 수 있습니다. 그러나 모방은 상황을 더 복잡하게 할 수 있습니다. 또한,이 3 마리의 개미는 재미 있고 북동쪽에있는 여러 종류의 괴물들이 이미 당신에 대해 알고있을 것입니다. 네 ... 불쾌 할 수도 있습니다. # 3은 내 텔레포 레이션 스크롤은 어디에 있습니까? 죄송합니다. 갑옷을 파괴했습니다.
—
John Dvorak
호기심 많은 관찰이지만 "선"에 대한 정의를 이해 하면 장애물이 없어도 보이지 않는 사각형이있는 것처럼 보입니다 . 예를 들어, 플레이어가 (0, 0)에 있으면 (5, 12)의 정사각형에 도달 할 수 없습니다. 예를 들어, 두 점 사이에 선을 그리기 위해 Bresenham의 선 알고리즘의 정식 구현을 지정하고 그 선과 플레이어 사이의 선이 장애물과 교차하면 사각형을 가려진 것으로 정의하는 것이 더 합리적 일 수 있습니다.
—
Ilmari Karonen
@IlmariKaronen 당신은 절대적으로 정확합니다. 그게 내가 좋아하는 방법입니다. :-).
—
저스틴