#P3344. Chessboard Dance

Chessboard Dance

题目描述

又一个无聊的周五下午,甲虫贝蒂思考着如何自娱自乐。她离开藏身处,在本尼特家的客厅里散步。本尼特夫妇去剧院了,桌上还留着一个棋盘!"这是练习棋盘舞的最佳时机,"贝蒂想!她兴奋得没注意到棋盘上还留着一些棋子,就开始了练习!她有一个脚本指导她如何在棋盘上移动。脚本是一个如下例所示的序列: 每个时刻,贝蒂站在棋盘的一个方格上,面朝四个方向之一(上、下、左、右,从棋盘上方俯视时)。执行"移动n"指令时,她会沿当前方向前进n格。如果移动n格会超出棋盘,她会停在棋盘边缘的最后一格,不会出去。转向指令有三种:右转、左转和向后转,这会改变贝蒂的朝向。注意转向不会改变贝蒂的位置。

如果贝蒂移动时遇到棋子,她会推动该棋子以及后方所有棋子(她可是只强壮的甲虫!)。这可能导致一些棋子从棋盘边缘掉落,但她毫不在意!例如,在下图中,左图是初始状态,右图是执行上述示例脚本后的状态。大写和小写字母分别表示白棋和黑棋。箭头显示贝蒂的位置和朝向。注意第一次移动时,黑王(r)从棋盘右侧掉落了! 你需要编写一个程序,读取棋盘的初始状态和练习脚本,输出练习后的棋盘最终状态。

输入

输入包含多个测试用例。每个测试用例分为两部分:棋盘初始状态和脚本。棋盘由8行8列字符组成。字母r、d、t、a、c、p表示黑棋,R、D、T、A、C、P表示白棋,点字符(.)表示空格。贝蒂开始跳舞的位置由四个字符之一<、>、^、v指定,同时也表示她的初始方向(左、右、上、下)。注意输入不一定是合法的棋局状态。

脚本紧接在棋盘后。由多行组成(0到1000行)。每行包含以下格式之一的指令(n为非负整数): 移动n 左转 右转 向后转

每个测试用例以单独一行#字符结束。输入的最后一行是两个连字符。

输出

每个测试用例的输出应以与输入相同的格式显示棋盘状态。每个棋盘后输出一个空行。

输入样例1

.....c..
.p..A..t
D..>T.Pr
....aP.P
p.d.C...
.....p.R
........
........
move 2
turn right
move 3
turn left
turn left
move 1
#
--

输出样例1

.....c..
.p..A..t
D.....TP
....a..P
p.d.C^..
.......R
.....P..
.....p..

来源

2006年德黑兰区域赛