Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- int linhas,colunas,qtdInstrucoesRobo,i,j,contFigurinhas,x,y;
- string instrucoes;
- char orientacaoInicial;
- bool f;
- scanf("%d %d %d",&linhas,&colunas,&qtdInstrucoesRobo);
- getchar();
- while(linhas && colunas && qtdInstrucoesRobo){
- contFigurinhas=0;
- f=false;
- char grid[linhas][colunas];
- for(i=0;i<linhas;i++){
- for(j=0;j<colunas;j++){
- scanf("%c",&grid[i][j]);
- if(grid[i][j]=='N' || grid[i][j]=='O' || grid[i][j]=='L'
- || grid[i][j]=='S'){
- orientacaoInicial = grid[i][j];
- }
- }
- getchar();
- }
- cin>>instrucoes;
- for(i=0;i<instrucoes.size();i++){
- // instrucao tipo E
- if(orientacaoInicial=='N' && instrucoes[i]=='E'){
- instrucoes[i] = 'w';
- orientacaoInicial = 'O';
- }
- if(orientacaoInicial=='O' && instrucoes[i]=='E'){
- instrucoes[i] = 'w';
- orientacaoInicial = 'S';
- }
- if(orientacaoInicial=='S' && instrucoes[i]=='E'){
- instrucoes[i] = 'w';
- orientacaoInicial = 'L';
- }
- if(orientacaoInicial=='L' && instrucoes[i]=='E'){
- instrucoes[i] = 'w';
- orientacaoInicial = 'N';
- }
- // instrucao tipo D
- if(orientacaoInicial=='N' && instrucoes[i]=='D'){
- instrucoes[i] = 'w';
- orientacaoInicial = 'L';
- }
- if(orientacaoInicial=='L' && instrucoes[i]=='D'){
- instrucoes[i] = 'w';
- orientacaoInicial = 'S';
- }
- if(orientacaoInicial=='S' && instrucoes[i]=='D'){
- instrucoes[i] = 'w';
- orientacaoInicial = 'O';
- }
- if(orientacaoInicial=='O' && instrucoes[i]=='D'){
- instrucoes[i] = 'w';
- orientacaoInicial = 'N';
- }
- // instruções para andar
- if(instrucoes[i]=='F'){
- // precisa disso pra achar o robo na grade
- for(x=0;x<linhas;x++){
- for(y=0;y<colunas;y++){
- if(grid[x][y]=='O' || grid[x][y]=='L'|| grid[x][y]=='S' || grid[x][y]=='N'){
- f = true;
- break;
- }
- }
- if(f)break;
- }
- if(grid[x][y]=='N'){// tem que andar pra cima
- if(x > 0 && grid[x-1][y]!='#'){
- if(grid[x-1][y]=='*'){
- contFigurinhas++;
- }
- grid[x-1][y] = 'N';
- grid[x][y] = '.';
- }
- }
- if(grid[x][y]=='S'){// tem que andar pra baixo
- if(x < linhas && grid[x+1][y]!='#'){
- if(grid[x+1][y]=='*'){
- contFigurinhas++;
- }
- grid[x+1][y] = 'S';
- grid[x][y] = '.';
- }
- }
- if(grid[x][y]=='O'){// tem que andar pra DIREITA
- if(y < colunas && grid[x][y+1]!='#'){
- if(grid[x][y+1]=='*'){
- contFigurinhas++;
- }
- grid[x][y+1] = 'O';
- grid[x][y] = '.';
- }
- }
- if(grid[x][y]=='L'){// tem que andar pra ESQUERDA
- if(y > 0 && grid[x][y-1]!='#'){
- if(grid[x][y-1]=='*'){
- contFigurinhas++;
- }
- grid[x][y-1] = 'L';
- grid[x][y] = '.';
- }
- }
- }
- }
- printf("%d\n",contFigurinhas);
- scanf("%d %d %d",&linhas,&colunas,&qtdInstrucoesRobo);
- getchar();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement