Пример #1
0
        public int Part1()
        {
            var oxigenGrid = new OxigenGrid();

            while (OxigenGrid.IsPosiblePaths())
            {
                try
                {
                    oxigenGrid = new OxigenGrid();
                    IntCodeComputer computer = new IntCodeComputer(oxigenGrid, oxigenGrid);
                    computer.Execute(_program);
                    Console.WriteLine("SOLUTION " + OxigenGrid.MovementsToOrigin.Count);
                    Console.Clear();
                    Console.WriteLine(Day13Utils.PrintBoard(oxigenGrid.GetGrid()));
                    Console.WriteLine("----------------------------------");
                }
                catch (Exception e)
                {
                    //Console.WriteLine("End of simulation");
                }
            }

            StringBuilder builder = new StringBuilder();

            foreach (var value in oxigenGrid.GetGrid())
            {
                builder.AppendLine($"{value.point.X},{value.point.Y},{value.value}");
            }
            File.WriteAllText("grid.txt", builder.ToString());
            Console.WriteLine("SOLUTION " + OxigenGrid.MovementsToOrigin.Count);
            Console.Clear();
            Console.WriteLine(Day13Utils.PrintBoard(oxigenGrid.GetGrid()));
            Console.WriteLine("----------------------------------");
            return(0);
        }
Пример #2
0
        public long Part2()
        {
            var outputConsole = new OutputFixed();
            var computer      = new IntCodeComputer(new InputFixedValue(2), outputConsole);
            var result        = computer.Execute(_program);

            return(outputConsole.GetOutPut());
        }
Пример #3
0
        public long Part1()
        {
            PaintingController paintingController = new PaintingController();
            IntCodeComputer    computer           = new IntCodeComputer(paintingController, paintingController);

            computer.Execute(_program);
            return(paintingController.GetPaintedPanels().Count);
        }
Пример #4
0
        public int Part1()
        {
            var             gameGrid = new GameGrid();
            IntCodeComputer computer = new IntCodeComputer(gameGrid, gameGrid);

            computer.Execute(_program);

            return(gameGrid.GetNumOfBlocks());
        }
Пример #5
0
        public static long ExecuteAmplifierControllerSoftware(long[] program, long setting, long previousOutput)
        {
            var             inputConsole  = new InputFixedList(setting, previousOutput);
            var             outputConsole = new OutputFixed();
            IntCodeComputer computer      = new IntCodeComputer(inputConsole, outputConsole);

            computer.Execute(program);
            return(outputConsole.GetOutPut());
        }
Пример #6
0
        public long Execute(int inputValue)
        {
            var input    = new InputFixedValue(inputValue);
            var output   = new OutputFixed();
            var computer = new IntCodeComputer(input, output);

            computer.Execute(_program);

            return(output.GetOutPut());
        }
Пример #7
0
        public long Part1()
        {
            var program = (long[])_program.Clone();

            program[1] = 12;
            program[2] = 2;

            var computer = new IntCodeComputer();

            var program2 = computer.Execute(program);

            return(program2[0]);
        }
Пример #8
0
        public int Part2()
        {
            var program = (long[])_program.Clone();

            for (int noun = 0; noun < 100; noun++)
            {
                for (int verb = 0; verb < 100; verb++)
                {
                    program[1] = noun;
                    program[2] = verb;

                    var computer = new IntCodeComputer();

                    var program2 = computer.Execute(program);
                    if (program2[0] == 19690720)
                    {
                        return(100 * noun + verb);
                    }
                }
            }

            return(0);
        }
Пример #9
0
        public string Part2()
        {
            PaintingController paintingController = new PaintingController(Color.White);
            IntCodeComputer    computer           = new IntCodeComputer(paintingController, paintingController);

            computer.Execute(_program);
            var paintedPanels = paintingController.GetPaintedPanels();
            var allX          = paintedPanels.Select(panel => panel.point.X).ToList();
            var allY          = paintedPanels.Select(panel => panel.point.Y).ToList();
            var minX          = allX.Min();
            var maxX          = allX.Max();
            var width         = (maxX - minX) + 1;
            var minY          = allY.Min();
            var maxY          = allY.Max();
            var height        = (maxY - minY) + 1;
            var result        = (new string(' ', width *height)).ToCharArray();
            var result2       = new char[width, height];

            foreach ((Point point, Color color)paintedPanel in paintedPanels)
            {
                if (paintedPanel.color == Color.White)
                {
                    int index = (paintedPanel.point.X + (-1 * minX)) + ((paintedPanel.point.Y + (-1 * minY)) * width);
                    result[index] = '#';
                }
            }

            foreach ((Point point, Color color)paintedPanel in paintedPanels)
            {
                if (paintedPanel.color == Color.White)
                {
                    int index = (paintedPanel.point.X + (-1 * minX)) * (paintedPanel.point.Y + (-1 * minY));
                    int x     = paintedPanel.point.X + (-1 * minX);
                    int y     = paintedPanel.point.Y + (-1 * minY);
                    result2[x, y] = '#';
                }
            }


            StringBuilder builder = new StringBuilder();

            for (int i = 0; i < result.Length; i++)
            {
                builder.Append(result[i]);
                if (i % width == 0)
                {
                    builder.Append(Environment.NewLine);
                }
            }

            StringBuilder builder2 = new StringBuilder();

            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    builder2.Append(result2[x, y] == '#' ? '#' : ' ');
                }

                builder2.Append(Environment.NewLine);
            }

            return(builder.ToString());
        }