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.tar.gz rockbox-d9002eb94a2f6dcb07b4869303068416b4e5590a.zip |
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 59bb9066cc..ba74fa5b08 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) | |||
1153 | *difficulty = classify( ); | 1153 | *difficulty = classify( ); |
1154 | return true; | 1154 | return true; |
1155 | } | 1155 | } |
1156 | |||
1157 | bool sudoku_solve_board(struct sudoku_state_t* state) | ||
1158 | { | ||
1159 | bool ret; | ||
1160 | int r,c,i; | ||
1161 | |||
1162 | reset( ); | ||
1163 | i=0; | ||
1164 | for (r=0;r<9;r++) { | ||
1165 | for (c=0;c<9;c++) { | ||
1166 | if( state->startboard[r][c]!='0' ) | ||
1167 | { | ||
1168 | fill( i, state->startboard[r][c] - '0' ); | ||
1169 | } | ||
1170 | i++; | ||
1171 | } | ||
1172 | } | ||
1173 | |||
1174 | ret = ( 0 == solve( ) && 81 == idx_history ); | ||
1175 | |||
1176 | if (ret) { | ||
1177 | i=0; | ||
1178 | for (r=0;r<9;r++) { | ||
1179 | for (c=0;c<9;c++) { | ||
1180 | state->currentboard[r][c]='0'+GET_DIGIT( board[ i ] ); | ||
1181 | i++; | ||
1182 | } | ||
1183 | } | ||
1184 | } | ||
1185 | return ret; | ||
1186 | } | ||