Code:
int main(void){
index k=0, j=0;
int d=0;
int lettercheck=0;
int yesorno;
int givenNumbers[9][9];
int valueMarker[9][9];
int sudoku[9][9];
#if 0
////// snip snip snip
#else
{
int testNumbers[9][9] = {
{ 5, 3, 0, 0, 3, 0, 0, 0, 0 },
{ 6, 0, 0, 1, 9, 5, 0, 0, 0 },
{ 0, 9, 8, 0, 0, 0, 0, 6, 0 },
{ 8, 0, 0, 0, 6, 0, 0, 0, 3 },
{ 4, 0, 0, 8, 0, 3, 0, 0, 1 },
{ 7, 0, 0, 0, 2, 0, 0, 0, 6 },
{ 0, 6, 0, 0, 0, 0, 2, 8, 0 },
{ 0, 0, 0, 4, 1, 9, 0, 0, 5 },
{ 0, 0, 0, 0, 8, 0, 0, 7, 9 },
};
for(k=0;k<9;k++){
for(j=0;j<9;j++){
sudoku[k][j]=testNumbers[k][j];
givenNumbers[k][j] = testNumbers[k][j] != 0;
}
}
}
#endif
solveSudoku(sudoku, 0, 0, givenNumbers,valueMarker);
printf("\n\t\tSolution:\n\n");
printSudoku(sudoku);
return 0;
}
Until it works for at least one known test case, there isn't any point going all interactive. It just wastes too much time.
Code:
(gdb) where
#0 0x0000000000400cf5 in solveSudoku (sudoku=0x7fffffffdeb0, r=1, c=7, givenNumbers=0x7fffffffe150, valueMarker=0x7fffffffe000) at bar.c:158
#1 0x0000000000400e7a in solveSudoku (sudoku=0x7fffffffdeb0, r=1, c=7, givenNumbers=0x7fffffffe150, valueMarker=0x7fffffffe000) at bar.c:175
#2 0x0000000000400e7a in solveSudoku (sudoku=0x7fffffffdeb0, r=1, c=7, givenNumbers=0x7fffffffe150, valueMarker=0x7fffffffe000) at bar.c:175
#3 0x0000000000400e7a in solveSudoku (sudoku=0x7fffffffdeb0, r=1, c=7, givenNumbers=0x7fffffffe150, valueMarker=0x7fffffffe000) at bar.c:175
#4 0x0000000000400e7a in solveSudoku (sudoku=0x7fffffffdeb0, r=1, c=7, givenNumbers=0x7fffffffe150, valueMarker=0x7fffffffe000) at bar.c:175
#5 0x0000000000400e7a in solveSudoku (sudoku=0x7fffffffdeb0, r=1, c=7, givenNumbers=0x7fffffffe150, valueMarker=0x7fffffffe000) at bar.c:175
// and so on....
(gdb) frame 10000
#10000 0x0000000000400e7a in solveSudoku (sudoku=0x7fffffffdeb0, r=1, c=7, givenNumbers=0x7fffffffe150, valueMarker=0x7fffffffe000) at bar.c:175
// then boredom set in...