#include <msmazes/core/fsm/builder/n_bit.hpp>
NBitPattern
.
typedef boost::mt19937 RNGEngine; typedef msmazes::NBitFSMBuilder<> Builder; typedef Builder::Pattern Pattern; typedef sgdk::IndexTypeFSM< boost::numeric::ublas::matrix<unsigned int> , unsigned int > FiniteStateMachine; RNGEngine rng_engine; Builder builder; FiniteStateMachine fsm; const Pattern& pattern = builder.getPattern(); builder.initialize(rng_engine, msmazes::StandardMazeMaker(), 5, 31, 0); fsm.initialize(builder); while (!fsm.hasReachedTargetState()) { unsigned int state = fsm.getCurrentState(); renderBitset(builder.getStateCell(state), pattern); // User-defined int input = getInputFromUser(); // User-defined if ((-1 < input) && (input < pattern.getMaxOutDegree())) { fsm.processInput(input); } }
The code above will produce a PIN Code Maze with five switches. You start with all the switches turned on, and the goal is to turn them all off. Input consists of selecting a switch. The switch may toggle, or it may not; if none of the other switches work, then you've reached a dead end.
All programs using this class template must define BOOST_PARAMETER_MAX_ARITY as 6 or more.
Parameter | Description | Default |
---|---|---|
CellContainerSelector | The type that will represent whether the cell container is a std::vector (in which case this type is boost::vecS ) or a std::deque (in which case this type is boost::dequeS ). | boost::vecS |
Block | The integer type in which the bits of each cell are stored. | unsigned long |
Allocator | The allocator type used for memory management of each cell. | std::allocator<Block> |
CellContainerSelector
must be either boost::vecS
or boost::dequeS
. Block
must be an unsigned integer type. Allocator
must satisfy the C++ standard requirements for an allocator.
Public Types | |
typedef implementation_defined | StateIndex |
typedef implementation_defined | InputIndex |
typedef implementation_defined | MazeGraph |
typedef implementation_defined | Pattern |
typedef implementation_defined | Cell |
typedef implementation_defined | Direction |
typedef implementation_defined | ArgumentValidationPolicy |
Public Member Functions | |
NBitFSMBuilder () | |
The default constructor. | |
virtual | ~NBitFSMBuilder () |
The destructor. | |
template<typename RNGEngine, typename MazeMaker, typename MazePolicy> | |
bool | initialize (RNGEngine &rng_engine_arg, const MazeMaker &maze_maker_arg, const unsigned long init_bit_count_arg, const unsigned long init_bit_count_arg, const unsigned long init_bit_count_arg, const MazePolicy &maze_policy_arg) |
template<typename Params> | |
bool | initialize_with_named_params (Params &p) |
const Pattern & | getPattern () const |
const MazeGraph & | getMazeGraph () const |
bool | isReady () const |
template<typename TransitionFunction> | |
void | buildTransitionFunction (TransitionFunction &transition_function) const |
StateIndex | getSourceState () const |
StateIndex | getTargetState () const |
bool | hasSolutionFromState (const StateIndex source_state) const |
InputIndex | getCorrectInput (const StateIndex source_state) const |
const Cell & | getStateCell (const StateIndex state) const |
Direction | getStateDirection (const StateIndex state) const |
|
The type representing the index of a vertex in the underlying maze graph, as defined in the FSM Builder concept. |
|
The type representing the index of an edge in the underlying maze graph, as defined in the FSM Builder concept. |
|
The type of the underlying maze graph, as defined in the FSM Builder concept. |
|
The type of the underlying pattern, as defined in the FSM Builder concept. |
|
The type of the cells in the underlying pattern, as defined in the FSM Builder concept. |
|
The type representing the course or bearing that is followed when traversing an edge in the underlying pattern's internal graph, as defined in the FSM Builder concept. |
|
The Argument Validation Policy in effect, as defined in the FSM Builder concept. |
|
Constructs this |
|
Destroys this |
|
Initializes this
You can also pass the arguments by name. (In this case, it is recommended that you do so; otherwise, some of the arguments may be indistinguishable from each other.) Use the parameter table above to look up the parameter names. Remember that each parameter name resides in the |
|
Initializes this |
|
Returns a const reference to the underlying pattern, as defined in the FSM Builder concept. |
|
Returns a const reference to the underlying maze graph, as defined in the FSM Builder concept. |
|
Returns the readiness of this |
|
Builds the specified transition function according to the structure of the underlying maze graph and its property maps, as defined in the FSM Builder concept. |
|
Returns the finite state machine's source state, as defined in the FSM Builder concept. |
|
Returns the finite state machine's target state, as defined in the FSM Builder concept. |
|
Indicates whether or not it is possible for the finite state machine to reach the target state from the specified state, as defined in the FSM Builder concept. |
|
Returns the input that brings the finite state machine one step closer to its target state, as defined in the FSM Builder concept. |
|
Returns the cell that the maze graph's cell index map pairs the specified state with, as defined in the FSM Builder concept. |
|
Returns the direction from the last-visited cell to the cell that the maze graph's cell index map pairs the specified state with, as defined in the FSM Builder concept. |
Multi-State Mazes in C++ is hosted by . Use the Table of Contents for navigation.