eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Шифрування робота

Шифрування робота

\includegraphics{https://static.e-olymp.com/content/4f/4f6fec1cf4971805e2ac189f24bf2b32c9db3ad6.jpg} Із-за підозри у шахрайстві один з параноїдальних авторів задач вирішив шифрувати всі свої повідомлення перед відправкою їх іншим членам жюрі. При цьому він не скористався стандартними методами шифрування, так як вващав що всі вони є гігантською частиною змови по придавленню змагання IDI Open зсередини. Він вважав, що шахраї - найгірші програмісти. І оскільки дешифрування вимагає певних навмчок програмування, то його можна не боятися. Разом з закодованим повідомленням він відправляв інформацію про його дешифрування. Проблема полягала лише у тому, що не всі члены жюрі могли реалізувати декодування. Ви повинні допомогти дешифрувати повідомлення, написавши для цього програму. Дешифрування виконується моделюванням руху робота на сітці. На початку робот знаходиться у північно-західному кутку сітки, обличчям повернутий на південь. Робот є достатньо простим механізмом, і виконує лише три різні команди: \begin{enumerate} \item \texttt{L} повертає робота на \textbf{90°} ліворуч \item \texttt{R} повертає робота на \textbf{90°} праворуч \item \texttt{F} пересуває робота на одну клітинку вперед. Якщо у результаті переміщення вперед робот впаде з решітки, то він замість переміщення повертається на \textbf{180°} і не рухається. \end{enumerate} Інструкції роботу подаються у рядку у вигляді набору команд, які можуть містити цикли. Цикл подається у вигляді \texttt{(множество команд)число} де \texttt{число} дорівнює кількості повторень множини команд у дужках, які повинні бути виконані. Рекурсивно можуть бути побудовані довгі послідовності команд. Більш формально: \begin{lstlisting} commandset ::= instruction+ instruction ::= command|loop loop ::= "(" commandset ")" number command ::= R|L|F number ::= 1|2|3|4|5|6|7|8|9 \end{lstlisting} Дешифрований текст отримується в результаті конкатенації символів у комірках сітки, на яких зупиняється робот після виконання кожного командного рядка. \InputFile Перший рядок містить кількість тестів $T$ ($0 < T ≤ 100$). Кожен тест починається рядком, який містить числа $W$ ($0 < W ≤ 50$) і $H$ ($0 < H ≤ 50$), відокремлені одним пропус ком і задають розміри сітки. Далі йде $H$ рядків, кожен з яких містить $W$ символів, що описують сітку. Наступний рядок містить кількість командних рядків $N$ ($0 < N ≤ 20$). Після нього йде $N$ командних рядків, які повинні бути викпонані роботом. Командні рядки містять не більше $50$ символів і мають синтаксис, описаний в умові. Символи з ASCII кодом менше $32$ і більше $126$ не зустрічаються на сітці робота. \OutputFile Для кожного тесту у окремому рядку вивести дешифрований текст.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
1
6 7
012345
6789AB
CDEFGH
IJKLMN
OPQRST
UVWXYZ
_! ,&
12
FFL(F)5
(F)4
(LF)2
(L(R)6L)9
RFRFFF
(L(F)2)2
LF
FLFF
FFFF
LF
FLFF
L(F)4
Вихідні дані #1
HELLO WORLD!