Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // (Based on: https://symbolsprogrammingblog.wordpress.com/2010/06/20/%D7%9E%D7%A6%D7%99%D7%90%D7%AA-%D7%94%D7%93%D7%A8%D7%9A-%D7%94%D7%A7%D7%A6%D7%A8%D7%94-%D7%91%D7%99%D7%95%D7%AA%D7%A8-%D7%91%D7%9E%D7%91%D7%95%D7%9A/ )
- // This code is waiting for you!
- // Fill the function "SolveMaze()" with your code so it will correctly solve the maze in the shortest way!
- #include <stdio.h>
- #define HEIGHT 50
- #define WIDTH 9
- #define WALL -1
- #define PATH 0
- #define START 83 // 'S'
- #define END 69 // 'E'
- #define ARROW 176 // ░
- // This function try to solve the maze with minimum steps.
- //
- // If succeeded - fill the given board with 'ARROW' in the path that is found,
- // and return the number of steps.
- // If failed - return -1
- int SolveMaze(int Maze[HEIGHT][WIDTH])
- {
- // ***********
- // Your Code!
- // ***********
- // For example:
- Maze[1][2] = ARROW; // 1
- Maze[1][3] = ARROW; // 2
- Maze[1][4] = ARROW; // 3
- Maze[1][5] = ARROW; // 4
- Maze[2][5] = ARROW; // 5
- Maze[3][5] = ARROW; // 6
- // ...
- return 6;
- }
- void ShowBoard(int Board[HEIGHT][WIDTH])
- {
- int row;
- int col;
- printf("Full maze:\n\n\n");
- for (row = 0; row < HEIGHT; row++) // Loop through every row
- {
- for (col = 0; col < WIDTH; col++) // And every column
- {
- switch(Board[row][col])
- {
- case WALL :
- putchar('\xDB');
- break;
- case PATH :
- putchar(' ');
- break;
- case ARROW :
- putchar(ARROW);
- break;
- case START :
- putchar(START);
- break;
- case END :
- putchar(END);
- break;
- default :
- putchar('?');
- break;
- }
- }
- putchar('\n');
- }
- printf("\n\n\n");
- }
- void CopyBoard(int targetBoard[HEIGHT][WIDTH], int sourceBoard[HEIGHT][WIDTH])
- {
- int i, j;
- for (i = 0; i < HEIGHT; i++)
- {
- for (j = 0; j < WIDTH; j++)
- {
- targetBoard[i][j] = sourceBoard[i][j];
- }
- }
- }
- void InitializeTheMaze(int Board[HEIGHT][WIDTH])
- {
- int TmpBoard[HEIGHT][WIDTH] = {
- { WALL , WALL , START, WALL, WALL , WALL , WALL , WALL , WALL },
- { WALL , PATH , PATH , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , WALL, WALL , PATH , WALL , WALL , WALL },
- { WALL , PATH , WALL , PATH, WALL , PATH , PATH , PATH , WALL },
- { WALL , WALL , WALL , PATH, WALL , PATH , WALL , PATH , WALL },
- { WALL , PATH , WALL , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , WALL, WALL , WALL , WALL , PATH , WALL },
- { WALL , PATH , PATH , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , WALL, WALL , WALL , WALL , WALL , WALL },
- { WALL , PATH , PATH , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , WALL , WALL , WALL, WALL , WALL , WALL , PATH , WALL },
- { WALL , PATH , PATH , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , WALL, PATH , WALL , WALL , PATH , WALL },
- { WALL , PATH , PATH , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , PATH, WALL , PATH , WALL , PATH , WALL },
- { WALL , PATH , WALL , PATH, PATH , PATH , WALL , PATH , WALL },
- { WALL , PATH , WALL , WALL, WALL , WALL , WALL , PATH , WALL },
- { WALL , PATH , PATH , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , WALL , WALL , WALL, WALL , WALL , WALL , PATH , WALL },
- { WALL , PATH , PATH , PATH, PATH , PATH , WALL , PATH , WALL },
- { WALL , WALL , PATH , WALL, WALL , WALL , WALL , PATH , WALL },
- { WALL , PATH , PATH , PATH, WALL , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , WALL, WALL , PATH , WALL , WALL , WALL },
- { WALL , PATH , PATH , PATH, WALL , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , PATH, WALL , PATH , WALL , PATH , WALL },
- { WALL , PATH , WALL , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , WALL , WALL , WALL, WALL , PATH , WALL , PATH , WALL },
- { WALL , PATH , PATH , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , PATH, PATH , WALL , PATH , WALL , WALL },
- { WALL , PATH , PATH , PATH, WALL , WALL , PATH , WALL , WALL },
- { WALL , WALL , WALL , PATH, WALL , WALL , PATH , WALL , WALL },
- { WALL , PATH , PATH , PATH, PATH , WALL , PATH , PATH , WALL },
- { WALL , WALL , WALL , PATH, WALL , WALL , PATH , PATH , WALL },
- { WALL , PATH , PATH , PATH, WALL , WALL , WALL , PATH , WALL },
- { WALL , PATH , WALL , PATH, WALL , PATH , WALL , PATH , WALL },
- { WALL , PATH , WALL , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , PATH , PATH , PATH, PATH , WALL , PATH , PATH , WALL },
- { WALL , PATH , WALL , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , WALL , WALL , WALL, PATH , WALL , PATH , WALL , WALL },
- { WALL , PATH , PATH , PATH, PATH , WALL , PATH , PATH , WALL },
- { WALL , PATH , WALL , WALL, WALL , WALL , PATH , WALL , WALL },
- { WALL , PATH , PATH , PATH, WALL , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , WALL, WALL , WALL , PATH , WALL , WALL },
- { WALL , PATH , PATH , PATH, WALL , PATH , PATH , PATH , WALL },
- { WALL , PATH , WALL , PATH, WALL , PATH , WALL , PATH , WALL },
- { WALL , PATH , WALL , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , WALL , WALL , WALL, WALL , WALL , WALL , PATH , WALL },
- { WALL , PATH , PATH , PATH, PATH , PATH , PATH , PATH , WALL },
- { WALL , PATH , PATH , WALL, WALL , WALL , PATH , PATH , WALL },
- { WALL , END , WALL , WALL, WALL , WALL , WALL , WALL , WALL }
- };
- CopyBoard(Board, TmpBoard);
- }
- int main()
- {
- int Board[HEIGHT][WIDTH];
- int Steps;
- InitializeTheMaze(Board);
- printf("* Start:\n\n");
- ShowBoard(Board);
- printf("* Program Answer:\n\n");
- Steps = SolveMaze(Board);
- if (Steps != -1) // Path found
- {
- printf("Number of steps: %d\n-----------------------\n", Steps);
- ShowBoard(Board);
- }
- else
- {
- printf("Maze cannot be solved! :(\n\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement