挑战
以字符计数最少的代码输入一个2D的棋盘表示,并根据输入输出“true”或“false”。
棋盘由4种类型的方块组成:
# - A solid wall
x - The target the laser has to hit
/ or \ - Mirrors pointing to a direction (depends on laser direction)
v, ^, > or < - The laser pointing to a direction (down, up, right and left respectively)
只有一个激光和一个目标。围墙必须形成一个大小任意的矩形,其中放置了激光和目标。室内可以有墙。
激光从其起点射出并向其指向的方向行驶。如果激光击中墙壁,则停止。如果激光射到镜子上,则会向镜子所指的方向反弹90度。镜子是双面的,这意味着两侧都是“反射性的”并且可能以两种方式反弹一束光线。如果激光束撞击激光 (^v><
) 本身,则将其视为墙壁(激光束会摧毁发射器,因此它永远不会击中目标)。
测试用例
输入: ########## # / \ # # # # \ x# # > / # ########## 输出: true 输入: ########## # v x # # / # # /# # \ # ########## 输出: false 输入: ############# # # # # > # # # # # # # x # # # # ############# 输出: false 输入: ########## #/\/\/\ # #\\//\\\ # #//\/\/\\# #\/\/\/x^# ########## 输出: true
代码行数包括输入/输出(即完整程序)。