You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.1 KiB
75 lines
2.1 KiB
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <time.h>
|
|
|
|
#define SIZE 9
|
|
|
|
void generateMatrix(int ma[SIZE][SIZE]);
|
|
void printMatrix(int ma[SIZE][SIZE]);
|
|
|
|
int main() {
|
|
int ma[SIZE][SIZE];
|
|
srand(time(NULL));
|
|
generateMatrix(ma);
|
|
printMatrix(ma);
|
|
return 0;
|
|
}
|
|
|
|
void generateMatrix(int ma[SIZE][SIZE]) {
|
|
for (int i = 0; i < SIZE; i++) {
|
|
for (int j = 0; j < SIZE; j++) {
|
|
ma[i][j] = 0;
|
|
}
|
|
}
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
for (int j = 0; j < 3; j++) {
|
|
int nums[9] = {0};
|
|
for (int k = 0; k < 3; k++) {
|
|
int num;
|
|
do {
|
|
num = rand() % 9 + 1;
|
|
} while (nums[num - 1] == 1);
|
|
nums[num - 1] = 1;
|
|
ma[i * 3 + k][j * 3 + rand() % 3] = num;
|
|
}
|
|
}
|
|
}
|
|
for (int i = 3; i < 6; i++) {
|
|
for (int j = 0; j < 3; j++) {
|
|
int nums[9] = {0};
|
|
for (int k = 0; k < 3; k++) {
|
|
int num;
|
|
do {
|
|
num = rand() % 9 + 1;
|
|
} while (nums[num - 1] == 1 || (i - 3) * 3 + k < 3 ? ma[(i - 3) * 3 + k][j * 3 + rand() % 3] == num : 0);
|
|
nums[num - 1] = 1;
|
|
ma[i * 3 + k][j * 3 + rand() % 3] = num;
|
|
}
|
|
}
|
|
}
|
|
for (int i = 6; i < 9; i++) {
|
|
for (int j = 0; j < 3; j++) {
|
|
int nums[9] = {0};
|
|
for (int k = 0; k < 3; k++) {
|
|
int num;
|
|
do {
|
|
num = rand() % 9 + 1;
|
|
} while (nums[num - 1] == 1 || i - 6 < 3 ? ma[(i - 6) * 3 + k][j * 3 + rand() % 3] == num : 0);
|
|
nums[num - 1] = 1;
|
|
ma[i * 3 + k][j * 3 + rand() % 3] = num;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void printMatrix(int ma[SIZE][SIZE]) {
|
|
for (int i = 0; i < SIZE; i++) {
|
|
for (int j = 0; j < SIZE; j++) {
|
|
printf("%c ", ma[i][j] ? '1' + ma[i][j] - 1 : '.');
|
|
if (j % 3 == 2 && j != SIZE - 1) printf("| ");
|
|
}
|
|
if (i % 3 == 2 && i != SIZE - 1) printf("\n---------------------\n");
|
|
else if (i != SIZE - 1) printf("\n");
|
|
}
|
|
} |