Refactor Sudoku solver architecture

This commit is contained in:
2026-09-10 23:11:34 +02:00
parent 7bf4a8d725
commit a5ec338277
21 changed files with 475 additions and 260 deletions
+12 -12
View File
@@ -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]