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 }