#include #include int** createSudoku(int emptyPositions) { int i, j, temp; int removed; int **sudoku; sudoku = (int **) malloc(sizeof(int *) * 9); for (i=0; i<9; i++) { sudoku[i] = (int *) malloc(sizeof(int) * 9); for (j=0; j<9; j++) { temp = j + i*3 + (i/3 + 1) + 1; sudoku[i][j] = temp - (9 * (temp/9)) + 1; } } removed = 0; while (removed < emptyPositions) { i = rand() % 9; j = rand() % 9; if (sudoku[i][j] > 0) { sudoku[i][j] = -1; removed++; } } return sudoku; } void printSudoku(int** sudoku) { int i,j; for (i=0; i<9; i++) { if (i%3 == 0) { printf("=============================\n"); } printf("|| "); for (j=0; j<9; j++) { if (sudoku[i][j] > 0) { printf("%d",sudoku[i][j]); } else { printf(" "); } if ((j+1)%3 != 0) { printf(" "); } else { printf(" || "); } } printf("\n"); } printf("=============================\n"); } int main(int argc, char **argv) { int emptyPositions = 0; if (argc > 1) { emptyPositions = atoi(argv[1]); } printSudoku(createSudoku(emptyPositions)); return 0; }