#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<stdbool.h>
void generate_random_walk(char walk[10][10]);
void print_array(char walk[10][10]);
const char alpha_code[26] = { 'a','b','c','d','e','f','g','h','i',
'j','k','l','m','n','o','p','q','r',
's','t','u','v','w','x','y','z' };
int main(void)
{
int walk[10][10];
generate_random_walk(walk);
print_array(walk);
return 0;
}
void generate_random_walk(char walk[10][10])
{
int step, row, col;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
walk[i][j] = '.';
}
}
srand((unsigned)time(NULL));
walk[0][0] = 'a';
row = 0;
col = 0;
for (int i = 1; i < 26;)
{
int step_code[4] = { false };
if (row > 0 && walk[row - 1][col] == '.')
{
step_code[0] = true;
}
if (row < 9 && walk[row + 1][col] == '.')
{
step_code[1] = true;
}
if (col > 0 && walk[row][col - 1] == '.')
{
step_code[2] = true;
}
if (col < 9 && walk[row][col + 1] == '.')
{
step_code[3] = true;
}
if (step_code[0] == false && step_code[1] == false && step_code[2] == false && step_code[3] == false)
{
break;
}
step = rand() % 4;
switch (step)
{
case 0:
if (step_code[0] == true)
{
row--;
walk[row][col] = alpha_code[i];
i++;
}
break;
case 1:
if (step_code[1] == true)
{
row++;
walk[row][col] = alpha_code[i];
i++;
}
break;
case 2:
if (step_code[2] == true)
{
col--;
walk[row][col] = alpha_code[i];
i++;
}
break;
case 3:
if (step_code[3] == true)
{
col++;
walk[row][col] = alpha_code[i];
i++;
}
break;
}
}
}
void print_array(char walk[10][10])
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
printf(" %c ", walk[i][j]);
}
printf("\n");
}
}
10-11
10-11
10-11
10-11