Program Listing for File Domino.h

↰ Return to documentation for file (ADS/complexity/Domino.h)

/*--------------------------------------------------------------------------*/
/*----------------------------- File Domino.h ------------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/

#ifndef __ADS_Domino
 #define __ADS_Domino
                      /* self-identification: #endif constant */

/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/Contract.h"

#include <algorithm>
#include <cstddef>
#include <optional>
#include <vector>

/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/

namespace ADS {

struct Tile {
 int up , right , down , left;
 };

using Tiling = std::vector< std::vector< int > >;

inline bool legalTiling( const std::vector< Tile > & D , int n ,
                         const Tiling & T );

inline std::optional< Tiling > squareTiling( const std::vector< Tile > & D ,
                                             int n );

inline bool linearTiling( const std::vector< Tile > & D , long n );

/*--------------------------------------------------------------------------*/

}  // end( namespace ADS )

/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/

#include "ADS/complexity/impl/Domino.tpp"

/*--------------------------------------------------------------------------*/

#endif  /* Domino.h included */

/*--------------------------------------------------------------------------*/
/*--------------------------- End File Domino.h ----------------------------*/
/*--------------------------------------------------------------------------*/