# Module sudoku.solvers¶

None

None

View Source
``````from .solver import Solver

from .strategy_solver import StrategySolver

__all__ = ("Solver", "StrategySolver")
``````

## Classes¶

### Solver¶

 ```1 2 3 4 5``` ``````class Solver( /, *args, **kwargs ) ``````
View Source
``````class Solver(ABC):

@abstractmethod

def solve(self, puzzle: Puzzle[T]) -> bool:

"""Solve the puzzle in place.

Args:

puzzle (Puzzle): The puzzle to be solved.

Returns:

bool: Whether or not the puzzle is solved.

"""

...
``````

• abc.ABC

#### Descendants¶

• sudoku.solvers.StrategySolver

#### solve¶

 ```1 2 3 4``` ``````def solve( self, puzzle: 'Puzzle[T]' ) -> 'bool' ``````

Solve the puzzle in place.

Parameters:

Name Type Description Default
puzzle Puzzle The puzzle to be solved. None

Returns:

Type Description
bool Whether or not the puzzle is solved.
View Source
``````    @abstractmethod

def solve(self, puzzle: Puzzle[T]) -> bool:

"""Solve the puzzle in place.

Args:

puzzle (Puzzle): The puzzle to be solved.

Returns:

bool: Whether or not the puzzle is solved.

"""

...
``````

### StrategySolver¶

 ```1 2 3 4 5``` ``````class StrategySolver( /, *args, **kwargs ) ``````
View Source
``````class StrategySolver(Solver):

def solve(self, puzzle: Puzzle[T]) -> bool:

"""

Solve the puzzle using strategies

Returns:

bool: A boolean value indicating whether the puzzle could be solved

"""

if puzzle.has_conflicts():

return False

while not puzzle.is_solved():

changed = False

for strategy in essential_strategies(puzzle.order):

if strategy(puzzle) > 0:

changed = True

break

if not changed:

return False

return True
``````

#### Ancestors (in MRO)¶

• sudoku.solvers.Solver
• abc.ABC

#### solve¶

 ```1 2 3 4``` ``````def solve( self, puzzle: 'Puzzle[T]' ) -> 'bool' ``````

Solve the puzzle using strategies

Returns:

Type Description
bool A boolean value indicating whether the puzzle could be solved
View Source
``````    def solve(self, puzzle: Puzzle[T]) -> bool:

"""

Solve the puzzle using strategies

Returns:

bool: A boolean value indicating whether the puzzle could be solved

"""

if puzzle.has_conflicts():

return False

while not puzzle.is_solved():

changed = False

for strategy in essential_strategies(puzzle.order):

if strategy(puzzle) > 0:

changed = True

break

if not changed:

return False

return True
``````