Program Listing for File Generation.h

↰ Return to documentation for file (ADS/combinatorial/Generation.h)

/*--------------------------------------------------------------------------*/
/*--------------------------- File Generation.h ----------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/

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

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

#include "ADS/Contract.h"

#include <algorithm>
#include <cstddef>
#include <string>
#include <vector>

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

namespace ADS {

using Tuple = std::vector< int >;

template< class F >
long mixedRadix( const std::vector< int > & m , F && visit );

template< class F >
long grayTuples( const std::vector< int > & m , F && visit );

template< class F >
long permutationsLex( Tuple a , F && visit );

template< class F >
long plainChanges( int n , F && visit );

template< class F >
long heapPermutations( int n , F && visit );

template< class F >
long combinationsLex( int n , int t , F && visit );

template< class F >
long revolvingDoor( int n , int t , F && visit );

template< class F >
long integerPartitions( int n , F && visit );

template< class F >
long setPartitions( int n , F && visit );

template< class F >
long nestedParentheses( int n , F && visit );

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

}  // end( namespace ADS )

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

#include "ADS/combinatorial/impl/Generation.tpp"

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

#endif  /* Generation.h included */

/*--------------------------------------------------------------------------*/
/*------------------------- End File Generation.h --------------------------*/
/*--------------------------------------------------------------------------*/