public override string SolvePart1(string[] instructions) { General.clsPoint position = new(0, 0); General.Direction direction = General.Direction.Right; foreach (string instruction in instructions) { switch (instruction[0]) { case 'L': for (int i = 0; i < (int.Parse(instruction.Substring(1)) / 90); i++) { direction = (General.Direction)((((int)direction) + 1) % 4); } break; case 'R': for (int i = 0; i < (int.Parse(instruction.Substring(1)) / 90); i++) { direction = (General.Direction)((((int)direction) + 3) % 4); } break; case 'F': position = position.Move(direction, int.Parse(instruction.Substring(1))); break; default: position = position.Move(instruction).Last(); break; } } return("" + position.manhattan()); }
public void Rotate(long value) { int Current = (int)direction; if (value == 0) { direction = (General.Direction)((Current + 1) % 4); } else { direction = (General.Direction)((Current - 1 + 4) % 4); } }
public PaintingRobot(string sProgram, long start) { direction = General.Direction.Up; CurrentPosition = new General.clsPoint(0, 0); paintedPanels = new Dictionary <General.clsPoint, long>(); paintedPanels[CurrentPosition] = start; computer = new IntcodeComputer(); computer.loadProgram(sProgram); while (!computer.Halted) { Move(); } }