int main() { int exit = 0; exit = read_sudoku(); exit = solve_puzzle(); exit = check_validity_of_proposed_solution(); return exit; }
int main(int argc, char** argv) { FILE * stream = stdin; //Default stream SUDOKU_TYPE type = NORMAL_SUDOKU; bool result; Sudoku *spiel = NULL; spiel = malloc(sizeof(Sudoku)); spiel->field = malloc(sizeof(int) * SUDOKU_SIZE * SUDOKU_SIZE); if(!spiel) { printf("Speicher konnte nicht angefordert werden.\n"); return EXIT_FAILURE; } if(argc > 1) { if(strstr(argv[1], "x")) { type = X_SUDOKU; } if(strstr(argv[1], "h")) { printf("Verwendung: \n"); printf("csudoku [x] < file\n"); } } spiel->type = type; //raetsel aus stream einlesen read_sudoku(stream, spiel); write_sudoku(stdout, spiel); printf("\n"); //raetsel loesen result = solve(spiel); printf("Geschaft? %s\n", result? "true":"false"); //raetsel ausgeben write_sudoku(stdout, spiel); printf("\n"); fclose(stream); free(spiel); #ifdef DEBUG printf("\n"); printf("\n"); printf("\n"); printf("\n"); printf("\n"); #endif return EXIT_SUCCESS; }
/********* Main function ************/ int main() { /* Initialise random number generator */ init_random_seed(); /* read sudoku from a file */ read_sudoku(); /* Fill cells with random digits so each 3 × 3 square contains each of the integers 1 through 9 exactly once */ fill_rand_cells(); cost = evaluate_cost(); printf("COST: %d\n",cost); int number_nonfixed=number_nonfixed_cells(); MCL=pow(number_nonfixed,2); printf("MCL: %d\n",MCL); int m,n; int cycle = 0; while(cost != 0) { printf("CYCLE: %d\t COST: %d\n",++cycle,cost); T=2.5; for (n=1;n<=N;n++) { for (m=1;m<=MCL;m++) { choosing_neighbour(); if (cost==0) { break; } } if (cost==0) { break; } printf("COST: %d\n",cost); T=alpha*T; } } printf("FINAL Cost: %d\t CYCLES: %d\n",cost, cycle); /* write sudoku */ write_sudoku(); }
int main(int argc, char **argv) { assert(argc > 1); FILE *f = fopen(argv[1], "r"); if (f == NULL) err(1, "Unable to open \"%s\"", argv[1]); u16 i = 0; while (feof(f) == 0) { sudoku *s = read_sudoku(f); //dump(s); assert(dfs_backtrack_solve(s) == true); printf("\r%d", ++i); fflush(stdout); //dump(s); free(s); } fclose(f); return 0; }
int main() { int sud[9][9]; read_sudoku(sud); printf("\nEntered sudoku is"); print_sudoku(sud); int rows[9][2]; int cols[9][2]; int boxes[9][2]; if(preprocess(sud,rows,cols,boxes)) { printf("\nThere is some problem with the sudoku!"); return 1; } print_sudoku_processed(sud,rows,cols,boxes); int prob[9][9]; construct_prob(sud,rows,cols,boxes,prob); int val = prob_mat_eliminations(sud,rows,cols,boxes,prob); while(val) { if(val == -1) { print_sudoku(sud); printf("\nThere is some problem with the sudoku!"); return 3; } printf("\nInserted %d values",val); val = prob_mat_eliminations(sud,rows,cols,boxes,prob); } int i = 0; while(i<9) { if(rows[i][0] != 9) { break; } i++; } print_sudoku(sud); if(i==9) { printf("\nSuccess.. found the solution"); return 0; } printf("\n\nCOPY MATRIX OPERATION\n\n"); int **ptr_sud; ptr_sud = (int **)malloc(9*sizeof(int *)); int j; for(i = 0;i<9;i++) { *(ptr_sud+i) = (int *)malloc(9*sizeof(int)); } for(i = 0;i<9;i++) { for(j=0;j<9;j++) { *(*(ptr_sud+i)+j) = sud[i][j]; } } int failure = restart_operation(ptr_sud); if(!failure) { for(i = 0;i<9;i++) { for(j=0;j<9;j++) { sud[i][j] = *(*(ptr_sud+i)+j); } } print_sudoku(sud); } for(i = 0;i<9;i++) { free(*(ptr_sud+i)); } free(ptr_sud); if(!failure) { printf("\nSuccess found at level %d\nTotal respawns = %d\n",success_level,total_respawns); return 0; } printf("\n\nFailure in finding a solution!\n"); return 1; }