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.GetNotes().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.queue(change) } }) }) return len(ns.changes) } func (ns *NakedSingle) getName() string { return "Naked Single" } func (ns *NakedSingle) Name() string { return ns.getName() } // ────────────────────────────────────────────────────────────────────────────── // // NAKED_DOUBLE STRUCTURE // // ────────────────────────────────────────────────────────────────────────────── // type NakedPair struct { Base } // ────────────────────────────────────────────────────────────────────────────── // // NAKED_TRIPLE STRUCTURE // // ────────────────────────────────────────────────────────────────────────────── // type NakedTriple struct { Base }