From a314e945eda9e1b8b274c3e7b63030dd292415d4 Mon Sep 17 00:00:00 2001 From: Sacha Ligthert Date: Tue, 28 Jan 2025 02:30:25 +0100 Subject: [PATCH] Change int64 for select variables to uint64. (Closes #21) --- solver/processing.go | 16 ++++++++-------- solver/split.go | 2 +- solver/types.go | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/solver/processing.go b/solver/processing.go index 4c9fe7f..fc65601 100644 --- a/solver/processing.go +++ b/solver/processing.go @@ -23,7 +23,7 @@ func (solver *Solver) PopulateBlocks() { solver.findBlocks(&solver.Controller.Row9, &solver.row9s) // This calculates and stores the total number of solutions to validate. - solver.Iter = int64(len(solver.row1s)) * int64(len(solver.row2s)) * int64(len(solver.row3s)) * int64(len(solver.row4s)) * int64(len(solver.row5s)) * int64(len(solver.row6s)) * int64(len(solver.row7s)) * int64(len(solver.row8s)) * int64(len(solver.row9s)) + solver.Iter = uint64(len(solver.row1s)) * uint64(len(solver.row2s)) * uint64(len(solver.row3s)) * uint64(len(solver.row4s)) * uint64(len(solver.row5s)) * uint64(len(solver.row6s)) * uint64(len(solver.row7s)) * uint64(len(solver.row8s)) * uint64(len(solver.row9s)) } @@ -114,9 +114,9 @@ func (solver *Solver) Tracker() { var track int // Tracking the rate, starting point - var rateStart int64 + var rateStart uint64 // Tracking the rate, difference between previous iterations - var rateDiff int64 + var rateDiff uint64 // Tracking duration var timerStart = time.Now() @@ -164,7 +164,7 @@ func (solver *Solver) Tracker() { } // Printing the progress - log.Println("Processing: " + strconv.Itoa(int(percentage)) + "% (" + strconv.FormatInt(solver.counter.Load(), 10) + "/" + strconv.Itoa(int(solver.Iter)) + "); Rate: " + strconv.FormatInt(rateDiff, 10) + "/sec for " + timer_elapsed.String() + "; Time left (est.): " + est_fin) + 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) // After we are done printing, exit this for-loop if percentage == 100 { @@ -240,14 +240,14 @@ func (solver *Solver) validateCombination(row1 string, row2 string, row3 string, } // Calculate the average rate in a stored slice of rates. -func (solver *Solver) calcAVG() (avg int64) { - var avgSum int64 +func (solver *Solver) calcAVG() (avg uint64) { + var avgSum uint64 for _, value := range solver.rates { - avgSum += value + avgSum += uint64(value) } - avg = avgSum / int64(len(solver.rates)) + avg = avgSum / uint64(len(solver.rates)) return } diff --git a/solver/split.go b/solver/split.go index d501d92..b472e15 100644 --- a/solver/split.go +++ b/solver/split.go @@ -57,5 +57,5 @@ func (solver *Solver) setWorkload(agents []int) { solver.row1s = solver.row1s[start:finish] // Recalculate how much we need to grind through - solver.Iter = int64(len(solver.row1s)) * int64(len(solver.row2s)) * int64(len(solver.row3s)) * int64(len(solver.row4s)) * int64(len(solver.row5s)) * int64(len(solver.row6s)) * int64(len(solver.row7s)) * int64(len(solver.row8s)) * int64(len(solver.row9s)) + solver.Iter = uint64(len(solver.row1s)) * uint64(len(solver.row2s)) * uint64(len(solver.row3s)) * uint64(len(solver.row4s)) * uint64(len(solver.row5s)) * uint64(len(solver.row6s)) * uint64(len(solver.row7s)) * uint64(len(solver.row8s)) * uint64(len(solver.row9s)) } diff --git a/solver/types.go b/solver/types.go index 63570b5..bb428fa 100644 --- a/solver/types.go +++ b/solver/types.go @@ -28,9 +28,9 @@ type Solver struct { // Slice of possible blocks for the 9th row. row9s []string // Maximum number of possible solutions with the current set of rows. - Iter int64 + Iter uint64 // Progress counter, needs atomic due to the number of updates. - counter atomic.Int64 + counter atomic.Uint64 // Slice of rates for accurate duration estimation. - rates []int64 + rates []uint64 }