Exemplo n.º 1
0
        public int[] Interprets_comma_separated_code(string code)
        {
            var interpreter  = new InterpreterBuilder().Build();
            var instructions = interpreter.Interpret(code);

            return(instructions);
        }
Exemplo n.º 2
0
        public void Puzzle5_day2_answer()
        {
            var code           = File.ReadLines("C:\\Code\\github\\AdventOfCode2019\\Puzzle5\\input.txt").First();
            var interpreter    = new InterpreterBuilder().Build();
            var instructions   = interpreter.Interpret(code);
            var inputSender    = new QueuedInputSenderBuilder().Build();
            var outputReceiver = new QueuedOutputReceiverBuilder().ThatIgnoresZeros().Build();
            var computer       = new IntcodeComputerBuilder().WithInputSender(inputSender).WithOutputReceiver(outputReceiver).Build();

            inputSender.Enqueue(5);
            computer.Run(instructions);

            Assert.AreEqual(9217546, outputReceiver.Dequeue());
        }
Exemplo n.º 3
0
        public void Puzzle5_day1_answer()
        {
            var code           = File.ReadLines(@"C:\Users\Neil\Documents\GitHub\AdventOfCode2019\Puzzle5\input.txt").First();
            var interpreter    = new InterpreterBuilder().Build();
            var instructions   = interpreter.Interpret(code);
            var inputSender    = new QueuedInputSenderBuilder().Build();
            var outputReceiver = new QueuedOutputReceiverBuilder().ThatIgnoresZeros().Build();
            var computer       = new IntcodeComputerBuilder().WithInputSender(inputSender).WithOutputReceiver(outputReceiver).Build();

            inputSender.Enqueue(1);
            computer.Run(instructions);

            Assert.AreEqual(6761139, outputReceiver.Dequeue());
        }
Exemplo n.º 4
0
        public void Puzzle2_day2_answer()
        {
            var code         = File.ReadLines("C:\\Code\\github\\AdventOfCode2019\\Puzzle2\\input.txt").First();
            var interpreter  = new InterpreterBuilder().Build();
            var instructions = interpreter.Interpret(code);

            instructions[1] = 53;
            instructions[2] = 98;
            var computer = new IntcodeComputerBuilder().Build();

            computer.Run(instructions);

            Assert.AreEqual(19690720, computer.Memory.GetValueImmediate(0));
        }
Exemplo n.º 5
0
        public void Puzzle2_day1_answer()
        {
            var code         = File.ReadLines(".\\Puzzle2.txt").First();
            var interpreter  = new InterpreterBuilder().Build();
            var instructions = interpreter.Interpret(code);

            instructions[1] = 12;
            instructions[2] = 2;
            var computer = new IntcodeComputerBuilder().Build();

            computer.Run(instructions);

            Assert.AreEqual(4576384, computer.Memory.GetValueImmediate(0));
        }
Exemplo n.º 6
0
        public void X()
        {
            //var code = File.ReadLines(".\\Puzzle5.txt").First();
            var code         = "3,15,3,16,1002,16,10,16,1,16,15,15,4,15,99,0,0";
            var interpreter  = new InterpreterBuilder().Build();
            var instructions = interpreter.Interpret(code);

            int result =
                Enumerable.Range(0, 5)
                .GetPermutations()
                .Select(phaseSettingPermutation =>
            {
                var test = new List <Amplifier>();
                IInputSender connector = null;
                foreach (var phaseSetting in phaseSettingPermutation)
                {
                    var inputSender    = connector ?? new ReceiverSenderConnector();
                    var outputReceiver = new ReceiverSenderConnector();

                    inputSender.Enqueue(phaseSetting);

                    if (connector == null)
                    {
                        inputSender.Enqueue(0);
                    }

                    var parser   = new InstructionParser();
                    var computer = new IntcodeComputer(inputSender, outputReceiver, parser);
                    test.Add(new Amplifier(computer, instructions));

                    connector = outputReceiver;
                }

                foreach (var amplifier in test)
                {
                    amplifier.Run();
                }

                return(connector.Dequeue());
            })
                .Largest();

            Assert.AreEqual(43210, result);
        }