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);
                    }
                }
            }
        }