Newer
Older
#ifndef STRATEGY__H
#define STRATEGY__H
#include "Config.hpp"
public :
static inline std::pair<std::string, int> endMovement{"", 0};
private :
enum Type
{
Incremental,
Sequential
};
Type type;
std::map<std::pair<std::string, std::string>, std::string> edges;
std::map<std::string, bool> isDone;
std::vector<std::string> defaultCycle;
private :
std::pair<std::string, int> getMovementSequential(const Config & c, const std::string & transition);
std::pair<std::string, int> getMovementIncremental(const Config & c, const std::string & transition);
public :
Strategy(const std::vector<std::string_view> & lines);
std::pair<std::string, int> getMovement(const Config & c, const std::string & transition);
const std::string getInitialState() const;