int main()
{
    int exit = 0;
    exit = read_sudoku();
    exit = solve_puzzle();
    exit = check_validity_of_proposed_solution();
    return exit;
}
Example #2
0
File: main.c Project: truh/C-Sudoku
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;
}
Example #3
0
/********* 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();	
}
Example #4
0
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;
}
Example #5
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;
}