| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package main
- import (
- "fmt"
- "runtime"
- "strconv"
- "gitea.ligthert.net/golang/sudoku-funpark/controller"
- "gitea.ligthert.net/golang/sudoku-funpark/export"
- "gitea.ligthert.net/golang/sudoku-funpark/flags"
- "gitea.ligthert.net/golang/sudoku-funpark/outputter"
- "gitea.ligthert.net/golang/sudoku-funpark/solver"
- )
- func main() {
- // Instantiate the interfaces
- controller := controller.Controller{}
- outp := outputter.Outputter{}
- export := export.Export{Controller: &controller}
- flags := flags.Flags{Controller: &controller}
- solver := solver.Solver{Controller: &controller, Outp: &outp}
- // Parse and handle flags
- flags.ParseFlags()
- // Tell outp what kind of output is expected.
- outp.OutputType = controller.Print
- // Report number of CPUs being used, if set.
- if runtime.NumCPU() != controller.NumCPUs {
- outp.Println("Using " + strconv.Itoa(controller.NumCPUs) + " CPUs, (was " + strconv.Itoa(runtime.NumCPU()) + ")")
- }
- // Load blocks from CSV file
- solver.LoadBlocks()
- // Find rows that fit with the entered rows
- solver.PopulateBlocks()
- // If needed, split the workload
- // May exit and throw an error if the work load isn't viable
- if controller.Split != 1 {
- solver.SelectWorkload()
- }
- // Print the total number of solutions to validate
- outp.Println("Number of (potential) solutions:", solver.Iter)
- // Check the number of solutions
- go solver.CheckCombinations()
- solver.Tracker()
- fmt.Println(export.Export())
- }
|