Пример #1
0
        private static void RestartMachine()
        {
            string inputFromTxt = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "puzzleInput.txt"));

            octcodeList        = (Array.ConvertAll(inputFromTxt.Split(','), s => Int64.Parse(s))).ToList();
            panels             = new List <Panel>();
            outputIndex        = 0;
            relativeBaseResult = 0;
            runProgram         = true;
            octcodeListIndex   = 0;
            panelCounter       = 1;
            Panel startPanel = new Panel()
            {
                Color = 0, CordinateX = 0, CordinateY = 0
            };

            panels.Add(startPanel);
            RobotPointigDirections = RobotPointigDirections.UP;
        }
Пример #2
0
        private static long MoveAcordingToOutput(bool isLeftDirection)
        {
            var   tt    = panels.Last();
            Panel panel = new Panel();

            if (isLeftDirection)
            {
                switch (RobotPointigDirections)
                {
                case (RobotPointigDirections.UP):
                    panel.CordinateX = tt.CordinateX - 1;
                    panel.CordinateY = tt.CordinateY;

                    RobotPointigDirections = RobotPointigDirections.LEFT;
                    //Console.WriteLine($"direction LEFT");
                    break;

                case (RobotPointigDirections.LEFT):
                    panel.CordinateX = tt.CordinateX;
                    panel.CordinateY = tt.CordinateY - 1;

                    RobotPointigDirections = RobotPointigDirections.DOWN;
                    //Console.WriteLine($"direction DOWN");
                    break;

                case (RobotPointigDirections.DOWN):
                    panel.CordinateX = tt.CordinateX + 1;
                    panel.CordinateY = tt.CordinateY;

                    RobotPointigDirections = RobotPointigDirections.RIGHT;
                    //Console.WriteLine($"direction RIGHT");
                    break;

                case (RobotPointigDirections.RIGHT):
                    panel.CordinateX = tt.CordinateX;
                    panel.CordinateY = tt.CordinateY + 1;

                    RobotPointigDirections = RobotPointigDirections.UP;
                    //Console.WriteLine($"direction UP");
                    break;

                default:
                    break;
                }
            }
            else
            {
                switch (RobotPointigDirections)
                {
                case (RobotPointigDirections.UP):
                    panel.CordinateX = tt.CordinateX + 1;
                    panel.CordinateY = tt.CordinateY;

                    RobotPointigDirections = RobotPointigDirections.RIGHT;
                    //Console.WriteLine($"direction RIGHT");
                    break;

                case (RobotPointigDirections.LEFT):
                    panel.CordinateX = tt.CordinateX;
                    panel.CordinateY = tt.CordinateY + 1;

                    RobotPointigDirections = RobotPointigDirections.UP;
                    //Console.WriteLine($"direction UP");
                    break;

                case (RobotPointigDirections.DOWN):
                    panel.CordinateX = tt.CordinateX - 1;
                    panel.CordinateY = tt.CordinateY;

                    RobotPointigDirections = RobotPointigDirections.LEFT;
                    //Console.WriteLine($"direction LEFT");
                    break;

                case (RobotPointigDirections.RIGHT):
                    panel.CordinateX = tt.CordinateX;
                    panel.CordinateY = tt.CordinateY - 1;

                    RobotPointigDirections = RobotPointigDirections.DOWN;
                    //Console.WriteLine($"direction DOWN");
                    break;

                default:
                    break;
                }
            }

            if (IsPanelColored(panel))
            {
                var tttt = panels.Where(x => x.CordinateX == panel.CordinateX && x.CordinateY == panel.CordinateY).LastOrDefault().Color;
                panels.Add(panel);
                //Console.WriteLine($"Read color {(tttt == 0 ? "Black" : "White")}");
                return(tttt);
            }
            else
            {
                panelCounter++;
                panels.Add(panel);
                return(0);
            }
        }