summaryrefslogtreecommitdiff
path: root/apps/plugins/sudoku/generator.c
diff options
context:
space:
mode:
authorTeruaki Kawashima <teru@rockbox.org>2009-12-16 11:53:36 +0000
committerTeruaki Kawashima <teru@rockbox.org>2009-12-16 11:53:36 +0000
commitd9002eb94a2f6dcb07b4869303068416b4e5590a (patch)
tree8fd87c07786ab78d3212349fa622e442d0722b43 /apps/plugins/sudoku/generator.c
parent4e89025935fc155d35d1bffb88c028892181f58c (diff)
downloadrockbox-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.c31
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;
+}