Задача
Самый короткий код по количеству символов для ввода двумерного представления платы и вывода "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><
), он рассматривается как стена (лазерный луч разрушает луч и поэтому никогда не попадает в цель).
Тестовые примеры
Input: ########## # / \ # # # # \ x# # > / # ########## Output: true Input: ########## # v x # # / # # /# # \ # ########## Output: false Input: ############# # # # # > # # # # # # # x # # # # ############# Output: false Input: ########## #/\/\/\ # #\\//\\\ # #//\/\/\\# #\/\/\/x^# ########## Output: true
Количество кодов включает ввод/вывод (т.е. полную программу).