summaryrefslogtreecommitdiff
path: root/solve.c
diff options
context:
space:
mode:
Diffstat (limited to 'solve.c')
-rw-r--r--solve.c104
1 files changed, 17 insertions, 87 deletions
diff --git a/solve.c b/solve.c
index a5f02bf..ff82351 100644
--- a/solve.c
+++ b/solve.c
@@ -5,6 +5,7 @@
#include "update.h"
#include "cell.h"
#include "display.h"
+#include "load.h"
/*
* For all unsolved cells on the board, solve them if they have been marked as
@@ -344,98 +345,27 @@ int board_is_solved(struct cell (*b)[9][9])
int main(int argc, char **argv)
{
struct cell board[9][9];
+ FILE *f = NULL;
memset(board, 0, sizeof(board));
- board[1][0].val = 6;
- board[2][0].val = 1;
- board[3][0].val = 5;
- board[8][0].val = 9;
-
- board[1][1].val = 7;
- board[2][1].val = 5;
- board[3][1].val = 4;
- board[4][1].val = 9;
- board[5][1].val = 3;
- board[6][1].val = 6;
-
- board[0][2].val = 9;
- board[3][2].val = 6;
- board[7][2].val = 7;
-
- board[0][3].val = 4;
- board[3][3].val = 2;
- board[5][3].val = 6;
-
- board[0][4].val = 3;
- board[2][4].val = 9;
- board[6][4].val = 2;
- board[8][4].val = 7;
-
- board[3][5].val = 9;
- board[5][5].val = 5;
- board[8][5].val = 3;
-
- board[1][6].val = 8;
- board[5][6].val = 9;
- board[8][6].val = 5;
-
-
- board[2][7].val = 4;
- board[3][7].val = 7;
- board[4][7].val = 5;
- board[5][7].val = 2;
- board[6][7].val = 8;
- board[7][7].val = 9;
-
-
- board[0][8].val = 5;
- board[5][8].val = 1;
- board[6][8].val = 7;
- board[7][8].val = 3;
-
-// board[7][0].val = 3;
-// board[4][1].val = 3;
-// board[0][7].val = 3;
-// board[1][4].val = 3;
-//
-// /* dummy board taken from the guardian lol */
-// /* FIXME: have a way to input boards, silly */
-// board[0][0].val = 7;
-// board[0][4].val = 5;
-//
-// board[1][2].val = 5;
-// board[1][4].val = 9;
-//
-// board[2][1].val = 6;
-// board[2][2].val = 4;
-// board[2][5].val = 2;
-//
-// board[3][0].val = 1;
-// board[3][5].val = 9;
-// board[3][6].val = 7;
-//
-// board[4][0].val = 9;
-// board[4][2].val = 6;
-// board[4][3].val = 4;
-// board[4][7].val = 8;
-// board[4][8].val = 5;
-//
-// board[5][4].val = 2;
-//
-// board[6][4].val = 8;
-// board[6][6].val = 5;
-// board[6][7].val = 6;
-//
-// board[7][1].val = 8;
-// board[7][6].val = 3;
-//
-// board[8][0].val = 4;
-// board[8][4].val = 1;
-// board[8][5].val = 7;
-// board[8][8].val = 8;
+ if (argc != 2) {
+ printf("Syntax: %s puzzle_file\n", argv[0]);
+ return 1;
+ }
+
+ f = fopen(argv[1], "r");
+ if (!f) {
+ perror("fopen");
+ return 1;
+ }
+ if (load(f, &board) < 0) {
+ fclose(f);
+ return 1;
+ }
+ fclose(f);
display(board);