Trait quickbacktrack::Puzzle
[−]
[src]
pub trait Puzzle: Clone { type Pos: Copy + Debug; type Val: Copy + Debug + PartialEq; fn solve_simple(&mut self); fn set(&mut self, pos: Self::Pos, val: Self::Val); fn print(&self); fn possible(&self, pos: Self::Pos) -> Vec<Self::Val>; fn is_solved(&self) -> bool; fn remove(&mut self, other: &Self); }
Implemented by puzzles.
A puzzle stores the state of the problem, and can be modified by inserting a value at a position within the puzzle. The solver does not understand the internal structure of the puzzle, but is still able to find a solution (if any exists).
The initial state does not have to empty, and you can get the difference at the end
by setting SolveSettings::difference(true)
.
Associated Types
type Pos: Copy + Debug
The type of position.
type Val: Copy + Debug + PartialEq
The type of values stored in the puzzle.
Required Methods
fn solve_simple(&mut self)
Solve simple stuff faster. This will reduce the number of steps in solution. If you do not know how to solve this, leave it empty.
fn set(&mut self, pos: Self::Pos, val: Self::Val)
Sets a value at position.
fn print(&self)
Print puzzle out to standard output.
fn possible(&self, pos: Self::Pos) -> Vec<Self::Val>
Returns possible values at a given position. The last move in the list has highest priority, because the solver pops the values in turn.
fn is_solved(&self) -> bool
Whether puzzle is solved.
fn remove(&mut self, other: &Self)
Removes values from other puzzle to show changes.