#include<iostream>
#include<cmath>
#include<cstdio>
#include<iomanip>
#include<algorithm>
using namespace std;
int i,n,j,k,x,y,t;
char a[9][9];
string c,b,z,e;
void ss(int p,int q,int s);
int main()
{
for(i=1;i<=8;i++)
for(j=1;j<=8;j++)
{
cin>>a[i][j];
if(a[i][j]=='>'||a[i][j]=='<'||a[i][j]=='^'||a[i][j]=='v')
{
x=i;y=j;
if(a[i][j]=='^')t=1;
if(a[i][j]=='>')t=2;
if(a[i][j]=='v')t=3;
if(a[i][j]=='<')t=4;
}
}
cin>>b;
while(b[0]!='#')
{
if(b[0]=='m'){//move
cin>>n;
for(i=1;i<=n;i++)
{
if(t==1){
ss(x-1,y,1);
a[x][y]='.';
x--;
a[x][y]='^';
}
if(t==2){
ss(x,y+1,2);
a[x][y]='.';
y++;
a[x][y]='>';
}
if(t==3){
ss(x+1,y,3);
a[x][y]='.';
x++;
a[x][y]='v';
}
if(t==4){
ss(x,y-1,4);
a[x][y]='.';
y--;
a[x][y]='<';
}
if(x==1||y==1||x==8||y==8)break;//判断边界
}
}
if(b[0]=='t'){//turn 判断转向
cin>>e;
if(e[0]=='r'){//right
t++;
if(t>4)t-=4;
if(t==1)a[i][j]='^';
if(t==2)a[i][j]='>';
if(t==3)a[i][j]='v';
if(t==4)a[i][j]='<';
}
if(e[0]=='l'){//left
t--;
if(t<1)t+=4;
if(t==1)a[i][j]='^';
if(t==2)a[i][j]='>';
if(t==3)a[i][j]='v';
if(t==4)a[i][j]='<';
}
if(e[0]=='b'){//back
t+=2;
if(t>4)t-=4;
if(t==1)a[i][j]='^';
if(t==2)a[i][j]='>';
if(t==3)a[i][j]='v';
if(t==4)a[i][j]='<';
}
}
cin>>b;
}
for(i=1;i<=8;i++)
{
for(j=1;j<=8;j++)
cout<<a[i][j];
cout<<endl;
}
return 0;
}
void ss(int p,int q,int s)
{
if(a[p][q]!='.')//是否要推棋子
{
if(s==1&&p-1>=1)ss(p-1,q,s),a[p-1][q]=a[p][q];
if(s==2&&q+1<=8)ss(p,q+1,s),a[p][q+1]=a[p][q];
if(s==3&&p+1<=8)ss(p+1,q,s),a[p+1][q]=a[p][q];
if(s==4&&q-1>=1)ss(p,q-1,s),a[p][q-1]=a[p][q];
a[p][q]='.';
}
}
求助