Advertisement
royalsflush

Referência para 227 (Luiza)

Mar 2nd, 2012
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. char grid[10][10];
  6. char move;
  7. bool ill;
  8. int ei, ej;
  9. int _42=1;
  10.  
  11. bool execMove(int di, int dj) {
  12.     if (ill) return true;
  13.     if (ei+di<0 || ei+di>=5) return true;
  14.     if (ej+dj<0 || ej+dj>=5) return true;
  15.  
  16.     grid[ei][ej]=grid[ei+di][ej+dj];
  17.     grid[ei+di][ej+dj]=' ';
  18.     ei+=di, ej+=dj;
  19.    
  20.     return false;
  21. }
  22.  
  23. void getLine(char* str) {
  24.     char tmp;
  25.    
  26.     scanf("%c", &tmp);
  27.     while (tmp=='\n') scanf("%c", &tmp);
  28.     str[0]=tmp;
  29.  
  30.     gets(&str[1]);
  31. }
  32.  
  33. int main() {
  34.     while (1) {
  35.         getLine(grid[0]);
  36.         if (!strcmp(grid[0],"Z")) break;
  37.         if (_42!=1) printf("\n");
  38.  
  39.         for (int i=1; i<5; i++)
  40.             getLine(grid[i]);
  41.  
  42.         for (int i=0; i<5; i++)
  43.             for (int j=0; j<5; j++)
  44.                 if (grid[i][j]==' ')
  45.                     ei=i, ej=j;
  46.         ill=false;
  47.         scanf(" %c", &move);
  48.  
  49.         while (move!='0') {
  50.             switch (move) {
  51.                 case 'A':
  52.                     ill=execMove(-1,0);
  53.                     break;
  54.                 case 'R':
  55.                     ill=execMove(0,1);
  56.                     break; 
  57.                 case 'L':
  58.                     ill=execMove(0,-1);
  59.                     break;
  60.                 case 'B':
  61.                     ill=execMove(1,0);
  62.                     break;
  63.                 default:
  64.                     ill=true;
  65.                     break;
  66.             }  
  67.  
  68.             scanf(" %c", &move);
  69.         }
  70.  
  71.         printf("Puzzle #%d:\n", _42++);
  72.         if (ill) printf("This puzzle has no final configuration.\n");
  73.         else {
  74.             for (int i=0; i<5; i++) {
  75.                 printf("%c", grid[i][0]);
  76.  
  77.                 for (int j=1; j<5; j++)
  78.                     printf(" %c", grid[i][j]);
  79.                 printf("\n");
  80.             }
  81.         }
  82.     }
  83.  
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement