Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- char grid[10][10];
- char move;
- bool ill;
- int ei, ej;
- int _42=1;
- bool execMove(int di, int dj) {
- if (ill) return true;
- if (ei+di<0 || ei+di>=5) return true;
- if (ej+dj<0 || ej+dj>=5) return true;
- grid[ei][ej]=grid[ei+di][ej+dj];
- grid[ei+di][ej+dj]=' ';
- ei+=di, ej+=dj;
- return false;
- }
- void getLine(char* str) {
- char tmp;
- scanf("%c", &tmp);
- while (tmp=='\n') scanf("%c", &tmp);
- str[0]=tmp;
- gets(&str[1]);
- }
- int main() {
- while (1) {
- getLine(grid[0]);
- if (!strcmp(grid[0],"Z")) break;
- if (_42!=1) printf("\n");
- for (int i=1; i<5; i++)
- getLine(grid[i]);
- for (int i=0; i<5; i++)
- for (int j=0; j<5; j++)
- if (grid[i][j]==' ')
- ei=i, ej=j;
- ill=false;
- scanf(" %c", &move);
- while (move!='0') {
- switch (move) {
- case 'A':
- ill=execMove(-1,0);
- break;
- case 'R':
- ill=execMove(0,1);
- break;
- case 'L':
- ill=execMove(0,-1);
- break;
- case 'B':
- ill=execMove(1,0);
- break;
- default:
- ill=true;
- break;
- }
- scanf(" %c", &move);
- }
- printf("Puzzle #%d:\n", _42++);
- if (ill) printf("This puzzle has no final configuration.\n");
- else {
- for (int i=0; i<5; i++) {
- printf("%c", grid[i][0]);
- for (int j=1; j<5; j++)
- printf(" %c", grid[i][j]);
- printf("\n");
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement