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.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.c31
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
1157bool 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}