Files

51 lines
2.4 KiB
Go

package strategies
import "git.kleiax.de/homepage/field"
// ────────────────────────────────────────────────────────────────────────────── //
// NAKED_SINGLE STRUCTURE //
// ────────────────────────────────────────────────────────────────────────────── //
type NakedSingle struct {
Base
}
func (ns *NakedSingle) SearchProgressableCells() int {
ns.field.ForEachPart(func(part field.Part) {
part.ForEachCell(func(cell *field.Cell) {
candidates := cell.Notes.Get()
if len(candidates) == 1 && cell.GetNumber() == 0 {
change := field.ExternalChange{
Cell: cell,
Action: field.ActionSetNumber,
Value: candidates[0],
From: cell.GetNumber(),
TriggerdBy: ns.getName(),
}
ns.changes = append(ns.changes, change)
}
})
})
return len(ns.changes)
}
func (ns *NakedSingle) getName() string {
return "Naked Single"
}
// ────────────────────────────────────────────────────────────────────────────── //
// NAKED_DOUBLE STRUCTURE //
// ────────────────────────────────────────────────────────────────────────────── //
type NakedPair struct {
Base
}
// ────────────────────────────────────────────────────────────────────────────── //
// NAKED_TRIPLE STRUCTURE //
// ────────────────────────────────────────────────────────────────────────────── //
type NakedTriple struct {
Base
}