Refactor Sudoku solver architecture
This commit is contained in:
@@ -3,7 +3,7 @@ package strategies
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.kleiax.de/homepage/board"
|
||||
"git.kleiax.de/homepage/field"
|
||||
)
|
||||
|
||||
// ────────────────────────────────────────────────────────────────────────────── //
|
||||
@@ -11,9 +11,9 @@ import (
|
||||
// ────────────────────────────────────────────────────────────────────────────── //
|
||||
|
||||
type Strategy interface {
|
||||
Init(f *board.Field)
|
||||
ApplyAll() []board.ExternalChange
|
||||
ApplyNext() board.ExternalChange
|
||||
Init(f *field.Field)
|
||||
ApplyAll() []field.ExternalChange
|
||||
ApplyNext() field.ExternalChange
|
||||
Name() string
|
||||
SearchProgressableCells() int
|
||||
}
|
||||
@@ -23,7 +23,7 @@ type Strategy interface {
|
||||
// ────────────────────────────────────────────────────────────────────────────── //
|
||||
|
||||
type StrategyVisualization interface {
|
||||
pointOut(f *board.Field) []board.Mark
|
||||
pointOut(f *field.Field) []field.Mark
|
||||
}
|
||||
|
||||
// ────────────────────────────────────────────────────────────────────────────── //
|
||||
@@ -32,16 +32,16 @@ type StrategyVisualization interface {
|
||||
|
||||
type Base struct {
|
||||
name string
|
||||
field *board.Field
|
||||
changes []board.ExternalChange
|
||||
field *field.Field
|
||||
changes []field.ExternalChange
|
||||
}
|
||||
|
||||
func (b *Base) Init(f *board.Field) {
|
||||
func (b *Base) Init(f *field.Field) {
|
||||
b.field = f
|
||||
}
|
||||
|
||||
func (b *Base) ApplyAll() []board.ExternalChange {
|
||||
changesCopy := make([]board.ExternalChange, len(b.changes))
|
||||
func (b *Base) ApplyAll() []field.ExternalChange {
|
||||
changesCopy := make([]field.ExternalChange, len(b.changes))
|
||||
copy(changesCopy, b.changes)
|
||||
|
||||
for _, change := range b.changes {
|
||||
@@ -53,9 +53,9 @@ func (b *Base) ApplyAll() []board.ExternalChange {
|
||||
return changesCopy
|
||||
}
|
||||
|
||||
func (b *Base) ApplyNext() board.ExternalChange {
|
||||
func (b *Base) ApplyNext() field.ExternalChange {
|
||||
if len(b.changes) < 1 {
|
||||
return board.ExternalChange{}
|
||||
return field.ExternalChange{}
|
||||
}
|
||||
|
||||
changeCopy := b.changes[0]
|
||||
|
||||
Reference in New Issue
Block a user