Example #1
0
        public void Should_output_for_positional_mode(int input, string expected)
        {
            var program     = new RecursiveProgram(new IntCodeValidator(), new IntCodeProgramFactory());
            var diagnostics = program.RunDiagnostics(input, positionalmode);

            Assert.That(diagnostics, Is.EqualTo(expected));
        }
Example #2
0
        public void Program_should_iterate_using_program_value_length_configuration([Random(1, 255, 3)] int diagnosticSystem)
        {
            var program     = "3,0,4,0,99";
            var diagnostics = new RecursiveProgram(new IntCodeValidator(), new IntCodeProgramFactory());
            var output      = diagnostics.RunDiagnostics(diagnosticSystem, program);

            Assert.That(output, Is.EqualTo(diagnosticSystem.ToString()));
        }
        public void Should_output_diagnostic_code()
        {
            var input            = "3,225,1,225,6,6,1100,1,238,225,104,0,1101,61,45,225,102,94,66,224,101,-3854,224,224,4,224,102,8,223,223,1001,224,7,224,1,223,224,223,1101,31,30,225,1102,39,44,224,1001,224,-1716,224,4,224,102,8,223,223,1001,224,7,224,1,224,223,223,1101,92,41,225,101,90,40,224,1001,224,-120,224,4,224,102,8,223,223,1001,224,1,224,1,223,224,223,1101,51,78,224,101,-129,224,224,4,224,1002,223,8,223,1001,224,6,224,1,224,223,223,1,170,13,224,101,-140,224,224,4,224,102,8,223,223,1001,224,4,224,1,223,224,223,1101,14,58,225,1102,58,29,225,1102,68,70,225,1002,217,87,224,101,-783,224,224,4,224,102,8,223,223,101,2,224,224,1,224,223,223,1101,19,79,225,1001,135,42,224,1001,224,-56,224,4,224,102,8,223,223,1001,224,6,224,1,224,223,223,2,139,144,224,1001,224,-4060,224,4,224,102,8,223,223,101,1,224,224,1,223,224,223,1102,9,51,225,4,223,99,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,1105,0,99999,1105,227,247,1105,1,99999,1005,227,99999,1005,0,256,1105,1,99999,1106,227,99999,1106,0,265,1105,1,99999,1006,0,99999,1006,227,274,1105,1,99999,1105,1,280,1105,1,99999,1,225,225,225,1101,294,0,0,105,1,0,1105,1,99999,1106,0,300,1105,1,99999,1,225,225,225,1101,314,0,0,106,0,0,1105,1,99999,1008,677,226,224,102,2,223,223,1006,224,329,101,1,223,223,108,677,677,224,102,2,223,223,1005,224,344,101,1,223,223,107,677,677,224,1002,223,2,223,1005,224,359,101,1,223,223,1107,226,677,224,1002,223,2,223,1005,224,374,1001,223,1,223,1008,677,677,224,102,2,223,223,1006,224,389,1001,223,1,223,1007,677,677,224,1002,223,2,223,1006,224,404,1001,223,1,223,8,677,226,224,102,2,223,223,1005,224,419,1001,223,1,223,8,226,226,224,102,2,223,223,1006,224,434,101,1,223,223,1107,226,226,224,1002,223,2,223,1006,224,449,101,1,223,223,1107,677,226,224,102,2,223,223,1005,224,464,101,1,223,223,1108,226,226,224,102,2,223,223,1006,224,479,1001,223,1,223,7,677,677,224,1002,223,2,223,1006,224,494,101,1,223,223,7,677,226,224,102,2,223,223,1005,224,509,101,1,223,223,1108,226,677,224,1002,223,2,223,1006,224,524,101,1,223,223,8,226,677,224,1002,223,2,223,1005,224,539,101,1,223,223,1007,226,226,224,102,2,223,223,1006,224,554,1001,223,1,223,108,226,226,224,1002,223,2,223,1006,224,569,1001,223,1,223,1108,677,226,224,102,2,223,223,1005,224,584,101,1,223,223,108,226,677,224,102,2,223,223,1005,224,599,101,1,223,223,1007,226,677,224,102,2,223,223,1006,224,614,1001,223,1,223,1008,226,226,224,1002,223,2,223,1006,224,629,1001,223,1,223,107,226,226,224,1002,223,2,223,1006,224,644,101,1,223,223,7,226,677,224,102,2,223,223,1005,224,659,1001,223,1,223,107,677,226,224,102,2,223,223,1005,224,674,1001,223,1,223,4,223,99,226";
            var recursiveProgram = new RecursiveProgram(new IntCodeValidator(), new IntCodeProgramFactory());
            var diagnosticCode   = recursiveProgram.RunDiagnostics(1, input);

            Assert.That(diagnosticCode, Is.EqualTo("16574641"), $"{diagnosticCode}");
        }
Example #4
0
        public void Solution2()
        {
            using (var sr = new StreamReader(TestContext.CurrentContext.TestDirectory + "\\TestData\\day2.txt"))
            {
                var input = sr.ReadToEnd();

                var(item1, item2) = new RecursiveProgram(new IntCodeValidator(), new IntCodeProgramFactory()).GetForOutput(input, 19690720);
                var calculated = 100 * item1 + item2;
                Assert.That(calculated, Is.EqualTo(6255));
            }
        }
Example #5
0
        public void Test_less_than_expected_for_input(int input, string expected)
        {
            var program     = new RecursiveProgram(new IntCodeValidator(), new IntCodeProgramFactory());
            var diagnostics = program.RunDiagnostics(input, LessThatPositional);

            Assert.That(diagnostics, Is.EqualTo(expected));

            var diagnosticsImmediate = program.RunDiagnostics(input, LessThatImmediate);

            Assert.That(diagnosticsImmediate, Is.EqualTo(expected));
        }
Example #6
0
        public void Solution()
        {
            using (var sr = new StreamReader(TestContext.CurrentContext.TestDirectory + "\\TestData\\day2.txt"))
            {
                var validator = new IntCodeValidator();
                var input     = sr.ReadToEnd();
                var modified  = validator.SplitString(input).ToArray();
                modified[1] = 12;
                modified[2] = 2;
                input       = validator.Join(modified);

                var actual = new RecursiveProgram(new IntCodeValidator(), new IntCodeProgramFactory()).Process(input);
                Assert.That(validator.SplitString(actual).First(), Is.EqualTo(4690667));
            }
        }
Example #7
0
        public void Program_can_determine_input_pair_that_produces_desired_ouput()
        {
            var program = string.Empty;

            using (var sr = new StreamReader(TestContext.CurrentContext.WorkDirectory + "\\TestData\\day2.unit.txt"))
            {
                program = sr.ReadToEnd();
            }

            var expectedNoun = 12;
            var expectedVerb = 2;
            var outputValue  = 3500;

            var tuple = new RecursiveProgram(new IntCodeValidator(), new IntCodeProgramFactory()).GetForOutput(program, outputValue);

            Assert.That(tuple.Item1, Is.EqualTo(expectedNoun));
            Assert.That(tuple.Item2, Is.EqualTo(expectedVerb));
        }
Example #8
0
        public void Program_should_iterate_until_opcode_99(string input, string expected)
        {
            var actual = new RecursiveProgram(new IntCodeValidator(), new IntCodeProgramFactory()).Process(input);

            Assert.That(actual, Is.EqualTo(expected));
        }