diff options
| author | Teruaki Kawashima <teru@rockbox.org> | 2009-12-16 11:53:36 +0000 |
|---|---|---|
| committer | Teruaki Kawashima <teru@rockbox.org> | 2009-12-16 11:53:36 +0000 |
| commit | d9002eb94a2f6dcb07b4869303068416b4e5590a (patch) | |
| tree | 8fd87c07786ab78d3212349fa622e442d0722b43 /apps/plugins/sudoku/generator.c | |
| parent | 4e89025935fc155d35d1bffb88c028892181f58c (diff) | |
| download | rockbox-d9002eb94a2f6dcb07b4869303068416b4e5590a.zip rockbox-d9002eb94a2f6dcb07b4869303068416b4e5590a.tar.gz rockbox-d9002eb94a2f6dcb07b4869303068416b4e5590a.tar.bz2 rockbox-d9002eb94a2f6dcb07b4869303068416b4e5590a.tar.xz | |
sudoku: fix FS#7772: Sudoku: "Solve" Crash.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24024 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/sudoku/generator.c')
| -rw-r--r-- | apps/plugins/sudoku/generator.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/apps/plugins/sudoku/generator.c b/apps/plugins/sudoku/generator.c index 59bb906..ba74fa5 100644 --- a/apps/plugins/sudoku/generator.c +++ b/apps/plugins/sudoku/generator.c @@ -1153,3 +1153,34 @@ bool sudoku_generate_board(struct sudoku_state_t* state, char** difficulty) *difficulty = classify( ); return true; } + +bool sudoku_solve_board(struct sudoku_state_t* state) +{ + bool ret; + int r,c,i; + + reset( ); + i=0; + for (r=0;r<9;r++) { + for (c=0;c<9;c++) { + if( state->startboard[r][c]!='0' ) + { + fill( i, state->startboard[r][c] - '0' ); + } + i++; + } + } + + ret = ( 0 == solve( ) && 81 == idx_history ); + + if (ret) { + i=0; + for (r=0;r<9;r++) { + for (c=0;c<9;c++) { + state->currentboard[r][c]='0'+GET_DIGIT( board[ i ] ); + i++; + } + } + } + return ret; +} |