#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 12
void printMaze(char maze[][SIZE])
{
for (int row = 0; row < SIZE; ++row)
{
for (int column = 0; column < SIZE; ++column)
{
printf("%c ", maze
[row
][column
]); }
}
}
void mazeGenerator(char maze[][SIZE])
{
for (int row = 0; row < SIZE; ++row)
{
for (int column = 0; column < SIZE; ++column)
{
if (row == 0 || row == SIZE - 1 ||
column == 0 || column == SIZE - 1)
{
maze[row][column] = '#';
}
else
{
maze[row][column] = '.';
}
}
}
for (int row = 1; row < SIZE - 1; ++row)
{
for (int column = 1; column < SIZE - 1; ++column)
{
{
maze[row][column] = '#';
}
}
}
maze[1][1] = '.';
maze[SIZE - 2][SIZE - 2] = '.';
maze[SIZE - 2][SIZE - 1] = '.';
}
int mazeTraverse(char maze[][SIZE],
int row,
int column)
{
if (row < 0 || row >= SIZE ||
column < 0 || column >= SIZE)
{
return 1;
}
if (maze[row][column] != '.')
{
return 0;
}
maze[row][column] = 'X';
if (mazeTraverse(maze, row, column + 1))
{
return 1;
}
if (mazeTraverse(maze, row + 1, column))
{
return 1;
}
if (mazeTraverse(maze, row, column - 1))
{
return 1;
}
if (mazeTraverse(maze, row - 1, column))
{
return 1;
}
maze[row][column] = '.';
return 0;
}
int main(void)
{
char maze[SIZE][SIZE];
mazeGenerator(maze);
printf("Generated maze:\n\n"); printMaze(maze);
if (mazeTraverse(maze, 1, 1))
{
printf("The maze was solved.\n"); }
else
{
printf("No path was found.\n"); }
printf("\nMaze after traversal:\n\n"); printMaze(maze);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCiNkZWZpbmUgU0laRSAxMgoKdm9pZCBwcmludE1hemUoY2hhciBtYXplW11bU0laRV0pCnsKICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IFNJWkU7ICsrcm93KQogICAgewogICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IFNJWkU7ICsrY29sdW1uKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCIlYyAiLCBtYXplW3Jvd11bY29sdW1uXSk7CiAgICAgICAgfQoKICAgICAgICBwdXRzKCIiKTsKICAgIH0KCiAgICBwdXRzKCIiKTsKfQoKdm9pZCBtYXplR2VuZXJhdG9yKGNoYXIgbWF6ZVtdW1NJWkVdKQp7CiAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBTSVpFOyArK3JvdykKICAgIHsKICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBTSVpFOyArK2NvbHVtbikKICAgICAgICB7CiAgICAgICAgICAgIGlmIChyb3cgPT0gMCB8fCByb3cgPT0gU0laRSAtIDEgfHwKICAgICAgICAgICAgICAgIGNvbHVtbiA9PSAwIHx8IGNvbHVtbiA9PSBTSVpFIC0gMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbWF6ZVtyb3ddW2NvbHVtbl0gPSAnIyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBtYXplW3Jvd11bY29sdW1uXSA9ICcuJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmb3IgKGludCByb3cgPSAxOyByb3cgPCBTSVpFIC0gMTsgKytyb3cpCiAgICB7CiAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMTsgY29sdW1uIDwgU0laRSAtIDE7ICsrY29sdW1uKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHJhbmQoKSAlIDQgPT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbWF6ZVtyb3ddW2NvbHVtbl0gPSAnIyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbWF6ZVsxXVsxXSA9ICcuJzsKICAgIG1hemVbU0laRSAtIDJdW1NJWkUgLSAyXSA9ICcuJzsKCiAgICBtYXplW1NJWkUgLSAyXVtTSVpFIC0gMV0gPSAnLic7Cn0KCmludCBtYXplVHJhdmVyc2UoY2hhciBtYXplW11bU0laRV0sCiAgICAgICAgICAgICAgICAgaW50IHJvdywKICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKQp7CiAgICBpZiAocm93IDwgMCB8fCByb3cgPj0gU0laRSB8fAogICAgICAgIGNvbHVtbiA8IDAgfHwgY29sdW1uID49IFNJWkUpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKG1hemVbcm93XVtjb2x1bW5dICE9ICcuJykKICAgIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBtYXplW3Jvd11bY29sdW1uXSA9ICdYJzsKCiAgICBpZiAobWF6ZVRyYXZlcnNlKG1hemUsIHJvdywgY29sdW1uICsgMSkpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKG1hemVUcmF2ZXJzZShtYXplLCByb3cgKyAxLCBjb2x1bW4pKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGlmIChtYXplVHJhdmVyc2UobWF6ZSwgcm93LCBjb2x1bW4gLSAxKSkKICAgIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAobWF6ZVRyYXZlcnNlKG1hemUsIHJvdyAtIDEsIGNvbHVtbikpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgbWF6ZVtyb3ddW2NvbHVtbl0gPSAnLic7CgogICAgcmV0dXJuIDA7Cn0KCmludCBtYWluKHZvaWQpCnsKICAgIGNoYXIgbWF6ZVtTSVpFXVtTSVpFXTsKCiAgICBzcmFuZCgodW5zaWduZWQgaW50KXRpbWUoTlVMTCkpOwoKICAgIG1hemVHZW5lcmF0b3IobWF6ZSk7CgogICAgcHJpbnRmKCJHZW5lcmF0ZWQgbWF6ZTpcblxuIik7CiAgICBwcmludE1hemUobWF6ZSk7CgogICAgaWYgKG1hemVUcmF2ZXJzZShtYXplLCAxLCAxKSkKICAgIHsKICAgICAgICBwcmludGYoIlRoZSBtYXplIHdhcyBzb2x2ZWQuXG4iKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBwcmludGYoIk5vIHBhdGggd2FzIGZvdW5kLlxuIik7CiAgICB9CgogICAgcHJpbnRmKCJcbk1hemUgYWZ0ZXIgdHJhdmVyc2FsOlxuXG4iKTsKICAgIHByaW50TWF6ZShtYXplKTsKCiAgICByZXR1cm4gMDsKfQ==