8pts求调
查看原帖
8pts求调
797763
lishengkai楼主2024/5/12 17:37
#include<bits/stdc++.h>
using namespace std;
char ch[21][21],d[5]={' ','^','<','v','>'};
int nowx,nowy,fx;
string s;
int main()
{
	for(int i=1;i<=8;++i)
		for(int j=1;j<=8;++j)
		{
			cin>>ch[i][j];
			if(ch[i][j]=='^'||ch[i][j]=='<'||ch[i][j]=='>'||ch[i][j]=='v')
			{
				nowx=i;
				nowy=j;
				if(ch[i][j]=='^')
					fx=1;
				if(ch[i][j]=='<')
					fx=2;
				if(ch[i][j]=='v')
					fx=3;
				if(ch[i][j]=='>')
					fx=4;
			}
		}
	while(getline(cin,s))
	{
		if(s[0]=='#')
			break;
		if(s[0]=='m')
		{
			int x=nowx,y=nowy;
			int cnt=0;
			for(int i=5;i<s.size();++i)
				cnt=cnt*10+s[i]-48;
			if(fx==1)
			{
				nowx-=cnt;
				if(nowx<1)
					nowx=1;
				for(int i=x;i>nowx;--i)
				{
					if(ch[i-1][y]!='.')
					{
						int sum=1;
						for(int j=i-1;j>=1;--j)
							if(ch[j][y]=='.')
							{
								sum=j;
								break;
							}
						for(int j=sum;j<i;++j)
							ch[j+1][y]=ch[j][y];
						ch[i][y]='.';
					}else
						swap(ch[i][y],ch[i-1][y]);
				}
			}
			if(fx==2)
			{
				nowy-=cnt;
				if(nowy<1)
					nowy=1;
				for(int i=y;i>nowy;--i)
				{
					if(ch[x][i-1]!='.')
					{
						int sum=1;
						for(int j=i-1;j>=1;--j)
							if(ch[x][j]=='.')
							{
								sum=j;
								break;
							}
						for(int j=sum;j<=i;++j)
							ch[x][j+1]=ch[x][j];
						ch[x][i]='.';
					}else
						swap(ch[x][i],ch[x][i-1]);
				}
			}
			if(fx==3)
			{
				nowx+=cnt;
				if(nowx>8)
					nowx=8;
				for(int i=x;i<nowx;++i)
				{
					if(ch[i+1][y]!='.')
					{
						int sum=8;
						for(int j=i+1;j<=8;++j)
							if(ch[j][y]=='.')
							{
								sum=j;
								break;
							}
						for(int j=sum;j>i;--j)
							ch[j][y]=ch[j-1][y];
						ch[i][y]='.';
					}else
						swap(ch[i][y],ch[i+1][y]);
				}
			}
			if(fx==4)
			{
				nowy+=cnt;
				if(nowy>8)
					nowy=8;
				for(int i=y;i<nowy;++i)
				{
					if(ch[x][i+1]!='.')
					{
						int sum=8;
						for(int j=i+1;j<=8;++j)
							if(ch[x][j]=='.')
							{
								sum=j;
								break;
							}
						for(int j=sum;j>i;--j)
							ch[x][j]=ch[x][j-1];
						ch[x][i]='.';
					}else
						swap(ch[x][i],ch[x][i+1]);
				}
			}
		}
		if(s[0]=='t')
		{
			if(s[5]=='r')
			{
				if(fx==1)
					fx=4;else
					fx-=1;
			}
			if(s[5]=='l')
			{
				if(fx==4)
					fx=1;else
					fx+=1;
			}
			if(s[5]=='b')
			{
				if(fx==1)
					fx=3;
				if(fx==2)
					fx=4;
				if(fx==3)
					fx=1;
				if(fx==4)
					fx=2;
			}
			ch[nowx][nowy]=d[fx];
		}
	}
	for(int i=1;i<=8;++i)
	{
		for(int j=1;j<=8;++j)
			cout<<ch[i][j];
		cout<<'\n';
	}
	return 0;
}
2024/5/12 17:37
加载中...