Allow to set verbosity of output (Closes #26)
This commit is contained in:
@ -2,7 +2,6 @@ package solver
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"log"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
@ -15,8 +14,8 @@ var f embed.FS
|
||||
// Load all possible blocks from CSV in to memory
|
||||
func (solver *Solver) LoadBlocks() {
|
||||
|
||||
defer solver.timeTrack(time.Now(), "Loaded blocks")
|
||||
log.Println("Loading blocks")
|
||||
defer solver.timeTrack(time.Now(), "Done!")
|
||||
solver.Outp.Printf("Loading blocks... ")
|
||||
|
||||
var blocks []string
|
||||
|
||||
|
@ -1,15 +1,14 @@
|
||||
package solver
|
||||
|
||||
import (
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Find all possible blocks that can be used to find a solution.
|
||||
func (solver *Solver) PopulateBlocks() {
|
||||
|
||||
defer solver.timeTrack(time.Now(), "Populated blocks")
|
||||
log.Println("Populating blocks")
|
||||
defer solver.timeTrack(time.Now(), "Done!")
|
||||
solver.Outp.Printf("Populating blocks... ")
|
||||
|
||||
solver.findBlocks(&solver.Controller.Row1, &solver.row1s)
|
||||
solver.findBlocks(&solver.Controller.Row2, &solver.row2s)
|
||||
|
@ -1,7 +1,6 @@
|
||||
package solver
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
@ -12,12 +11,12 @@ import (
|
||||
// Modify solver.row1s so it limits the workload to what is only desired
|
||||
func (solver *Solver) SelectWorkload() {
|
||||
if solver.Controller.Split > len(solver.row1s) {
|
||||
log.Println("ERROR: Unable to divide the workload in " + strconv.Itoa(solver.Controller.Split) + " parts, when only " + strconv.Itoa(len(solver.row1s)) + " are available.\n\n")
|
||||
solver.Outp.Println("ERROR: Unable to divide the workload in " + strconv.Itoa(solver.Controller.Split) + " parts, when only " + strconv.Itoa(len(solver.row1s)) + " are available.\n\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
defer solver.timeTrack(time.Now(), "Workload set")
|
||||
log.Println("Setting workload")
|
||||
log.Println("We are agent " + strconv.Itoa(solver.Controller.Part) + " of " + strconv.Itoa(solver.Controller.Split))
|
||||
solver.Outp.Println("Setting workload")
|
||||
solver.Outp.Println("We are agent " + strconv.Itoa(solver.Controller.Part) + " of " + strconv.Itoa(solver.Controller.Split))
|
||||
workloads := solver.splitWorkload()
|
||||
solver.setWorkload(workloads)
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package solver
|
||||
|
||||
import (
|
||||
"log"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
@ -12,7 +11,7 @@ func (solver *Solver) Tracker() {
|
||||
|
||||
// Add time tracking
|
||||
defer solver.timeTrack(time.Now(), "Validated solutions")
|
||||
log.Println("Validating solutions")
|
||||
solver.Outp.Println("Validating solutions")
|
||||
|
||||
// Determine if the main-loop is done
|
||||
var done bool
|
||||
@ -73,7 +72,7 @@ func (solver *Solver) Tracker() {
|
||||
}
|
||||
|
||||
// Printing the progress
|
||||
log.Println("Processing: " + strconv.Itoa(int(percentage)) + "% (" + strconv.FormatUint(solver.counter.Load(), 10) + "/" + strconv.Itoa(int(solver.Iter)) + "); Rate: " + strconv.FormatUint(rateDiff, 10) + "/sec for " + timer_elapsed.String() + "; Time left (est.): " + est_fin)
|
||||
solver.Outp.Println("Processing: " + strconv.Itoa(int(percentage)) + "% (" + strconv.FormatUint(solver.counter.Load(), 10) + "/" + strconv.Itoa(int(solver.Iter)) + "); Rate: " + strconv.FormatUint(rateDiff, 10) + "/sec for " + timer_elapsed.String() + "; Time left (est.): " + est_fin)
|
||||
|
||||
// After we are done printing, exit this for-loop
|
||||
if percentage == 100 {
|
||||
|
@ -1,7 +1,6 @@
|
||||
package solver
|
||||
|
||||
import (
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -9,5 +8,5 @@ import (
|
||||
// Use with `defer`
|
||||
func (solver *Solver) timeTrack(start time.Time, msg string) {
|
||||
elapsed := time.Since(start)
|
||||
log.Printf("%s (%s)", msg, elapsed)
|
||||
solver.Outp.Printf("%s (%s)\n", msg, elapsed)
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"sync/atomic"
|
||||
|
||||
"gitea.ligthert.net/golang/sudoku-funpark/controller"
|
||||
"gitea.ligthert.net/golang/sudoku-funpark/outputter"
|
||||
)
|
||||
|
||||
// Solve a given Sudoku puzzle by iterating through all possible solutions.
|
||||
@ -33,4 +34,6 @@ type Solver struct {
|
||||
counter atomic.Uint64
|
||||
// Slice of rates for accurate duration estimation.
|
||||
rates []uint64
|
||||
// Reference to Outputter interface
|
||||
Outp *outputter.Outputter
|
||||
}
|
||||
|
Reference in New Issue
Block a user