给定一块板,编写最短的程序或函数以显示或返回玩家看到的字符。如果有可能,可以在角色和玩家之间划一条线,而不会越过阻碍视线的角色,则该角色就在视线范围内。
输入:
@
代表玩家的位置。输入中将只有这些之一。- 任何与正则表达式匹配的字符都会
[#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
好吧...蝙蝠,各种真菌,霉菌和蛇,甚至还有幽灵都挡住了视线,但是巨型模仿物,山地兽人,兽足,各种其他生物甚至是火涡流都不会吗?
—
约翰·德沃夏克
@JanDvorak我很懒,所以选择了大写字母来进行屏蔽。有点像矮小的怪物和矮小的怪物;您将能够看到。是的
—
贾斯汀2014年
我不了解量子力学,但是蝙蝠和侏儒木乃伊可能很容易。模仿可能会使事情进一步复杂化。另外,这三只蚂蚁可能很有趣,而东北的一大群各种各样的怪物可能已经了解您。是的...可能令人讨厌。至于#3-我的电话簿在哪里?糟糕,这是摧毁盔甲。
—
约翰·德沃夏克
只是一个奇怪的发现,但是如果我理解您对“线”的定义正确,那么看起来似乎有些正方形即使没有任何障碍也将不可见。例如,如果玩家在(0,0)处,则任何行都无法到达(5,12)处的正方形。例如,指定布雷森汉姆线算法的一些规范实现以在任意两点之间绘制一条线可能更有意义,并且将正方形定义为如果玩家和玩家之间的线与障碍物相交则被遮盖。
—
Ilmari Karonen 2014年
@IlmariKaronen你是完全正确的。这就是我喜欢的方式。:-)。
—
贾斯汀2014年