private bool IsValidMove(Puzzle puzzle, int r, int c, char value) { var row = puzzle.RowAt(r); var col = puzzle.ColumnAt(c); var box = puzzle.BoxAt(r, c); return !(row.Any(cell => cell.Value == value) || col.Any(cell => cell.Value == value) || box.Any(cell => cell.Value == value)); }
public override bool SolveCell(Puzzle puzzle, int r, int c) { return FindLastOne(puzzle, r, c, puzzle.BoxAt(r, c)) || FindLastOne(puzzle, r, c, puzzle.ColumnAt(c)) || FindLastOne(puzzle, r, c, puzzle.RowAt(r)); }