//Teste Spalten for (int Spalte = 0; Spalte < nSizeBoard && ValueFound == false; Spalte++) { if (GameBoard[ActZeile, Spalte].Value == Value) ValueFound = true; } //Teste SubGameBoard int ZeileSubBoardStart = (ActZeile/nSizeSubBoard)*nSizeSubBoard; for (int Zeile = ZeileSubBoardStart; Zeile < ZeileSubBoardStart + nSizeSubBoard; Zeile++) { int SpalteSubBoardStart = (ActSpalte / nSizeSubBoard) * nSizeSubBoard; for(int Spalte = SpalteSubBoardStart; Spalte < SpalteSubBoardStart+nSizeSubBoard; Spalte++) if (GameBoard[Zeile, Spalte].Value == Value) ValueFound = true; } if (ValueFound == false) PossibleValues.Add(Value); } if (PossibleValues.Count == 0) return false; GameBoard[ActZeile, ActSpalte].SetPossibleValues(PossibleValues); } if (FindNextCell(ref NextZeile, ref NextSpalte) == true && GameBoard[ActZeile, ActSpalte].Value!=0 ) { return true; // We are done } do { if (Compute(NextZeile, NextSpalte) == true) return true; } while (GameBoard[ActZeile, ActSpalte].StepNextPossibleEntry() == true); return false; } }