Шифрование робота
По подозрению в мошенничестве один из параноидальных авторов задач решил шифровать все свои сообщения перед отправкой их другим членам жюри. При этом он не воспользовался стандартными методами шифрования, так как считал, что все они являются гигантской частью заговора по придавлению соревнования IDI Open изнутри. Он считал, что мошенники – самые плохие программисты. И поскольку дешифрование требует определенных навмочек программирования, его можно не бояться.
Вместе с закодированным сообщением он отправлял информацию о его дешифровании. Проблема заключалась лишь в том, что все члены жюри могли реализовать декодирование. Вы должны помочь дешифровать сообщения, написав для этого приложение.
Дешифрование производится моделированием движения робота на сетке. В начале робот находится в северо-западном углу сетки, лицом повернут к югу. Робот является достаточно простым механизмом, и выполняет только три разных команды:
L
поворачивает работа на 90° налевоR
поворачивает работа на 90° вправоF
передвигает работа на одну ячейку вперед. Если в результате перемещения вперед робот упадет с решетки, то вместо перемещения возвращается на 180° и не двигается.
Инструкции о работе подаются в строке в виде набора команд, которые могут содержать циклы. Цикл представляется в виде (множество команд)число
где число
равно количеству повторений множества команд в скобках, которые должны быть выполнены. Рекурсивно могут быть построены длинные последовательности команд. Более формально:
commandset ::= instruction+ instruction ::= command|loop loop ::= "("commandset")" number command ::= R|L|F number ::= 1|2|3|4|5|6|7|8|9
Дешифрованный текст получается в результате конкатенации символов в ячейках сетки, на которых останавливается робот после выполнения каждой командной строки.
Входные данные
Первая строка содержит количество тестов (). Каждый тест начинается строкой, содержащей числа () и (), отделенные одним пропуском и задающие размеры сетки. Далее следует строк, каждая из которых содержит символов, описывающих сетку. Следующая строка содержит количество командных строк (). После него следует командных строк, которые должны быть выполнены роботом.
Командные строки содержат не более символов и имеют синтаксис, описанный в условии. Символы с ASCII кодом менее и более не встречаются на сетке робота.
Выходные данные
Для каждого теста в отдельной строке выводится дешифрованный текст.