Ваш друг дав вам вказівки щодо найкращого ресторану в місті. Це ряд лівих і правих поворотів. На жаль, вони забули згадати, на скільки часу потрібно йти прямо попереду між цими поворотами. На щастя, у вас є карта вулиць з усіма ресторанами на ній. Може, ви можете зрозуміти, який ресторан вони мали на увазі?
Вхідні дані
Карта подається у вигляді прямокутної сітки символів ASCII. .
дорога, #
ця будівля, A
щоб Z
є різні ресторани. Ви починаєте у верхньому лівому куті, виходячи на схід. Приклад:
.....A
.#.###
B....C
##.#.#
D....E
##F###
Вказівки вашого друга подаватимуться у вигляді (потенційно порожнього) рядка або списку символів, що містять L
s і R
s.
Вихідні дані
Ви можете пройти будь-який шлях, що відповідає лівому і правому поворотам у вхідному рядку, за умови, що ви зробите хоча б один крок вперед перед кожним з них, а також в кінці. Зокрема, це означає, що якщо рядок починається з R
вас, ви не можете одразу перейти на південь у самому лівому стовпчику. Це також означає, що ви не можете повернути на 180 ° на місці.
Ви не можете ходити по будівлях чи ресторанах, крім тієї, до якої ви дістаєтеся наприкінці. Ви можете припустити, що лівий верхній кут - це .
.
Ви повинні виводити всі ресторани, до яких можна дістатись за вказівками вашого друга, як рядок або список.
Ви можете припустити, що інструкція призведе до хоча б одного ресторану. Наприклад, сингл L
недійсний для вищенаведеної карти.
Деякі приклади для наведеної вище карти:
<empty> A
R F
RR B,D
RL C,E
RLRL E
RLLR C
RLLL B
RLRR D
RLRRRR A,C
RLLLRLL B
Зокрема, зверніть увагу, що R
це не доходить B
.
Ви можете написати програму або функцію, взявши введення через STDIN (або найближчу альтернативу), аргумент командного рядка або аргумент функції та вивівши результат через STDOUT (або найближчу альтернативу), значення повернення функції або параметр функції (out).
Діють стандартні правила гольф-коду .
Додаткові випробувальні випадки
Ось більша карта, люб’язно надана Conor O'Brien (яку я трохи змінив):
.......Y..........................######
.####.....#.##....##..######....#.###.##
B.........#.##.#..##....##...##.#.#P...#
.#.#####..#.##..#.##....##.#....#.####.#
.#.#...C..#.##...G##..#.##.#....#.#....#
.#.#.#.#..#.####.###.#..##.#....#.#.NO.#
.#.#A#.#..#.##...F###...##.#.##.#......#
.#.###....#.##....##....##.#....###....#
.#.....##...##....##...D##........###R.#
.#.##..##...##E...##..######....####...#
.....X....#.#.....................##S.T#
###########.###########M############...#
#................................###.#.#
#.#########.########.######.#.######.#.#
#......V#.....######.IJ...........##.#.#
#########.###......ZH############L##.#.#
#########.##########.###############.#.#
####K##...##########.#....#..........#.#
####....########U......##...#######Q.#.#
#####################################W.#
Ось декілька вибраних списків напрямків та очікуваних результатів:
<empty> Y
RR B
RLL Y
RLRR B,C,X
RLLLRRR G
RLRLRLRL I,Z
RLLRRRLRRLRR C,D,F,G,Y
RLRRLLRLLLRL B,C,Y
RLLRRLRRRLLLL F,M,N,O,Y
RLRRLLLRRRRLLLL F,M,Y
RLRRLRRRRRRRRRR E,F,Y
RLRRRLLLRLLRRLL M,N,O
RLLRRLRRLRLRLRRLLR E,U
RLRLLRLRRLRRRRRLRL F,G,I,Z
RLLRRLLRLLRRRLRRLLRR W
RLLLRRRLRRLLLLLRLLLLLL D,G,X
RLRLLRLRRLRLRRRLRLLLRR B,C,E,J,X
RLRLRLLLLRLRRRRRRLRLRRLR Y
RLRLRRRLRLLLLRLRRLLLLRLLRRL E,M,X
RLRLLLRRRLLLRLLRLLRLRRLRLRR B,E,F,K
RLRRRLLLLLLLLLLLLLLLRRRRLLL A,B
Питання про бонус: чи є вхід, який призводить до лише I
чи тільки U
? Якщо так, то який найкоротший такий шлях?