Struct IDASolver

Source
pub struct IDASolver<'a> { /* private fields */ }
Expand description

A solver implementing the iterative deepening A* search algorithm [Korf, 1997].

This solver uses the pruning tables pre-computed in pruning.rs to prevent the solver from exploring move sequences that will yield suboptimal solutions. This is the method typically implemented in most optimal Rubik’s Cube solvers.

Implementations§

Source§

impl<'a> IDASolver<'a>

Source

pub fn new(state: CubeState, tables: &'a PruningTables) -> Self

Trait Implementations§

Source§

impl Solver for IDASolver<'_>

Source§

fn get_start_state(&self) -> &CubeState

Gets a reference to the starting configuration.
Source§

fn solve(&self) -> MoveSequence

Applies the solver-specific search algorithm to find a sequence of moves that transform the starting state into the solved state.

Auto Trait Implementations§

§

impl<'a> Freeze for IDASolver<'a>

§

impl<'a> RefUnwindSafe for IDASolver<'a>

§

impl<'a> Send for IDASolver<'a>

§

impl<'a> Sync for IDASolver<'a>

§

impl<'a> Unpin for IDASolver<'a>

§

impl<'a> UnwindSafe for IDASolver<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.