| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package solver
- import (
- "log"
- "runtime"
- "strconv"
- )
- // The main loop that orchastrates all the logic.
- func Run() {
- // Instantiate the Solver interface
- solver := Solver{}
- // Parse and handle flags
- solver.parseFlags()
- // Report number of CPUs being used, if set.
- if runtime.NumCPU() != solver.numCPUs {
- log.Println("Using " + strconv.Itoa(solver.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 solver.split != 1 {
- solver.selectWorkload()
- }
- // Print the total number of solutions to validate
- log.Println("Number of (potential) solutions:", solver.iter)
- // Check the number of solutions
- go solver.checkCombinations()
- solver.tracker()
- // Print the valid solutions
- solver.printSolutions()
- }
|