Program Listing for File FifteenPuzzle.h
↰ Return to documentation for file (ADS/intractable/FifteenPuzzle.h)
/*--------------------------------------------------------------------------*/
/*-------------------------- File FifteenPuzzle.h --------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/
#ifndef __ADS_FifteenPuzzle
#define __ADS_FifteenPuzzle
/* self-identification: #endif constant */
/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/Contract.h"
#include "ADS/priority/FibonacciHeapPriorityQueue.h"
#include <cstdlib>
#include <map>
#include <type_traits>
#include <optional>
#include <queue>
#include <set>
#include <vector>
/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/
namespace ADS {
using Board = std::vector< int >;
inline Board puzzleGoal( int n );
inline int manhattan( const Board & B , int n );
inline std::vector< Board > puzzleMoves( const Board & B , int n );
inline Board puzzleSpiralGoal( int n );
inline std::optional< std::vector< Board > > puzzleBFS(
const Board & B , const Board & goal , int n ,
long * visited = nullptr );
inline std::optional< std::vector< Board > > puzzleDFS(
const Board & B , const Board & goal , int n ,
int nmax );
inline bool solvable( const Board & B , int n );
template< class Map = std::map< Board , int > >
std::optional< std::vector< Board > > solvePuzzle( const Board & B , int n ,
long * visited = nullptr );
/*--------------------------------------------------------------------------*/
} // end( namespace ADS )
/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/intractable/impl/FifteenPuzzle.tpp"
/*--------------------------------------------------------------------------*/
#endif /* FifteenPuzzle.h included */
/*--------------------------------------------------------------------------*/
/*------------------------ End File FifteenPuzzle.h ------------------------*/
/*--------------------------------------------------------------------------*/