public override void SolveHouse(IBoard <C> board, IHouse <C> house, SudokuLog sudokuResult) { // Key = BaseValue, Anz Possible Dictionary <int, List <C> > nakedMore = new Dictionary <int, List <C> >(); foreach (C c in house) { int val = c.CandidateValue; if (!nakedMore.ContainsKey(val)) { nakedMore.Add(val, new List <C>()); } nakedMore[val].Add(c); } foreach (KeyValuePair <int, List <C> > kv in nakedMore) { if (kv.Value.Count > 5) { return; } int count = kv.Value.First().Candidates.Count; if (kv.Value.Count == count) { string st = "Naked" + count; SudokuLog cresult = sudokuResult.CreateChildResult(); cresult.EventInfoInResult = new SudokuEvent { Value = 0, ChangedCellBase = house, Action = CellAction.RemoveCandidate, SolveTechnik = st, }; bool found = false; foreach (C c in house) { if (kv.Value.Contains(c)) { continue; } ICell kvc = kv.Value.First(); foreach (int d in kvc.Candidates) { found |= c.RemoveCandidate(d, cresult); } } if (!found) { sudokuResult.ChildSudokuResult.Remove(cresult); } } } }