38 lines
746 B
Go
38 lines
746 B
Go
package solver
|
|
|
|
// The actual function that finds the blocks matching the partial blocks.
|
|
func (solver *Solver) findBlocks(row *string, rows *[]string) {
|
|
// Declare selection
|
|
var selection []string
|
|
var currBlocks []string
|
|
funcRow := *row
|
|
|
|
for letter := range funcRow {
|
|
|
|
if len(selection) == 0 {
|
|
currBlocks = solver.Controller.Blocks
|
|
} else {
|
|
currBlocks = selection
|
|
selection = nil
|
|
}
|
|
|
|
for _, block := range currBlocks {
|
|
|
|
currRow := block
|
|
|
|
if funcRow[letter] == currRow[letter] {
|
|
foundRow := currRow
|
|
selection = append(selection, foundRow)
|
|
}
|
|
if funcRow[letter] == '0' {
|
|
foundRow := currRow
|
|
selection = append(selection, foundRow)
|
|
}
|
|
|
|
} // End for-loop
|
|
|
|
} // End for-loop
|
|
|
|
*rows = selection
|
|
}
|