Jelajahi Sumber

Change int64 for select variables to uint64. (Closes #21)

Sacha Ligthert 1 tahun lalu
induk
melakukan
a314e945ed
3 mengubah file dengan 12 tambahan dan 12 penghapusan
  1. 8 8
      solver/processing.go
  2. 1 1
      solver/split.go
  3. 3 3
      solver/types.go

+ 8 - 8
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
 }

+ 1 - 1
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))
 }

+ 3 - 3
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
 }