#ifndef SIMULATOR_H #define SIMULATOR_H #include #include #include #include #include using namespace std; #include "program.h" enum { CYCLE_TIMEOUT = 100000, FIELDS_XY = 20, }; struct Simulator { size_t cycle = 0; int32_t pub = 0; vector programs; vector> teams; Simulator(); static Position calcPosition(Position position, Direction direction, int32_t distance); void decode(Program& program, Task& task, int& v, int*& var_v, int param, int& additionalCycles); void decodeInstructionParameters(Program& program, Task& task, const Instruction& instruction, int& additionalCycles); Program* findProgram(Position position); void removeErroneousPrograms(); void simulate(); void beginInstruction(Program& program, Task& task); void endInstruction(Program& program, Task& task); }; #endif // SIMULATOR_H