diff options
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 | } | ||