예제 #1
0
        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());
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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();
            }
        }