| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package solver
- 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.
- type Solver struct {
- Controller *controller.Controller
- // Slice of possible blocks for the 1st row.
- row1s []string
- // Slice of possible blocks for the 2nd row.
- row2s []string
- // Slice of possible blocks for the 3rd row.
- row3s []string
- // Slice of possible blocks for the 4th row.
- row4s []string
- // Slice of possible blocks for the 5th row.
- row5s []string
- // Slice of possible blocks for the 6th row.
- row6s []string
- // Slice of possible blocks for the 7th row.
- row7s []string
- // Slice of possible blocks for the 8th row.
- row8s []string
- // Slice of possible blocks for the 9th row.
- row9s []string
- // Maximum number of possible solutions with the current set of rows.
- Iter uint64
- // Progress counter, needs atomic due to the number of updates.
- counter atomic.Uint64
- // Slice of rates for accurate duration estimation.
- rates []uint64
- // Reference to Outputter interface
- Outp *outputter.Outputter
- // Keeping track of processing units
- cores int
- }
|