| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #ifndef SIMULATOR_H
- #define SIMULATOR_H
- #include <array>
- #include <vector>
- #include <memory>
- #include <climits>
- #include <stdint.h>
- using namespace std;
- #include "program.h"
- enum {
- CYCLE_TIMEOUT = 100000,
- FIELDS_XY = 20,
- };
- struct Simulator {
- size_t cycle = 0;
- int32_t pub = 0;
- vector<Program> programs;
- vector<shared_ptr<Team>> 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
|