/
main.go
53 lines (41 loc) · 975 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main
import (
"flag"
"fmt"
"log"
"os"
"time"
"github.com/monquixote/gosudoku/sudoku"
)
func main() {
sudokuPath := flag.String("file", "sudoku.txt", "Path to the file containing sudokus")
flag.Parse()
file, err := os.Open(*sudokuPath)
if err != nil {
log.Fatal("Could not open file")
}
defer file.Close()
puzzles, err := sudoku.ReadSudokus(file)
if err != nil {
log.Fatal(err)
}
for i, puzzle := range puzzles {
if !sudoku.ValidatePuzzle(puzzle) {
log.Fatalf("Puzzle import failed puzzle %d invalid ", i)
}
}
//Solving all puzzles
start := time.Now()
for _, puzzle := range puzzles {
solvedPuzzle, solved := sudoku.SolvePuzzle(puzzle)
if solved == false {
log.Fatal("Failed to solve puzzle")
}
fmt.Print(sudoku.Puzzle2String(solvedPuzzle) + "\n")
if !sudoku.ValidatePuzzle(solvedPuzzle) {
log.Fatal("Solution Invalid")
}
}
stop := time.Now()
fmt.Printf("All puzzles solved in %v \n", stop.Sub(start))
}