diff --git a/reading_machine/src/Strategy.cpp b/reading_machine/src/Strategy.cpp index 769420b74b2ec107de14aff819e92ce564900815..b54097591827dec9e597d86743d957935dab4018 100644 --- a/reading_machine/src/Strategy.cpp +++ b/reading_machine/src/Strategy.cpp @@ -39,6 +39,8 @@ Strategy::Strategy(const std::vector<std::string_view> & lines) if (edges.empty()) util::myThrow("Strategy is empty"); + if (type == Type::Sequential) + defaultCycle.pop_back(); std::reverse(defaultCycle.begin(), defaultCycle.end()); originalDefaultCycle = defaultCycle; } @@ -50,18 +52,21 @@ std::pair<std::string, int> Strategy::getMovement(const Config & c, const std::s if (c.stateIsDone()) isDone[c.getState()] = true; - for (unsigned int i = 0; i < defaultCycle.size(); i++) + if (type == Type::Sequential) { + while (defaultCycle.size() && isDone[defaultCycle.back()]) + defaultCycle.pop_back(); + + return getMovementSequential(c, transitionPrefix); + } + + for (unsigned int i = 0; i < defaultCycle.size(); i++) if (isDone[defaultCycle[i]]) { while (defaultCycle.size() != i) defaultCycle.pop_back(); break; } - } - - if (type == Type::Sequential) - return getMovementSequential(c, transitionPrefix); return getMovementIncremental(c, transitionPrefix); }