Esempio n. 1
0
        public static long Part2(int target)
        {
            var intCode = FileReader.ReadInputLines(2).Single();

            long result = 0;
            var  noun   = 0;
            var  verb   = 0;

            while (result != target)
            {
                if (result / 1000 == target / 1000)
                {
                    verb++;
                }
                else
                {
                    noun++;
                }

                result = IntCodeLogic
                         .ParseAndRunIntCode(intCode, noun: noun, verb: verb)
                         .ToEnumerable()
                         .Single()
                         .CurrentState
                         .First();
            }

            return(100 * noun + verb);
        }
Esempio n. 2
0
        public static long Part1()
        {
            var intCode = FileReader.ReadInputLines(2).Single();

            var result = IntCodeLogic.ParseAndRunIntCode(intCode, noun: 12, verb: 2).ToEnumerable();

            return(result.Single().CurrentState.First());
        }
Esempio n. 3
0
        public static long Part2()
        {
            var lines  = FileReader.ReadInputLines(5).ToList();
            var inputs = new Queue <long>().WithValues(5);
            var output = IntCodeLogic.ParseAndRunIntCode(lines.First(), inputs).ToEnumerable();

            return(output.Single(x => !x.IsComplete).Output ?? -1);
        }
Esempio n. 4
0
 /// <param name="phases">Should contain exactly 5 unique phases (but will work with any number)</param>
 private static long RunPhasePermutation(string program, IEnumerable <int> phases)
 {
     return(phases.Aggregate((long)0, (current, phase) =>
                             IntCodeLogic.ParseAndRunIntCode(program, new Queue <long>().WithValues(phase, current))
                             .ToEnumerable()
                             .Single(x => !x.IsComplete).Output ?? -1
                             ));
 }
Esempio n. 5
0
        public void Day09Examples_Copy(string intCode)
        {
            var inputs = new Queue <long>();

            var intCodeOutputs = IntCodeLogic.ParseAndRunIntCode(intCode, inputs).ToEnumerable();

            string.Join(',', intCodeOutputs.Select(o => o.Output.ToString())).Should().Be(intCode + ",");
        }
Esempio n. 6
0
        public void Day09Examples_LargeNumber_1(string intCode)
        {
            var inputs = new Queue <long>();

            IntCodeLogic.ParseAndRunIntCode(intCode, inputs)
            .ToEnumerable()
            .Single(x => !x.IsComplete)
            .Output.ToString().Should().HaveLength(16);
        }
Esempio n. 7
0
        public void Day09Examples_LargeNumber_1(string intCode, long expectedOutput)
        {
            var inputs = new Queue <long>();

            IntCodeLogic.ParseAndRunIntCode(intCode, inputs)
            .ToEnumerable()
            .Single(x => !x.IsComplete)
            .Output
            .Should().Be(expectedOutput);
        }
Esempio n. 8
0
        public void LessThan(string intCode, int input, int expectedOutput)
        {
            var inputs = new Queue <long>().WithValues(input);

            IntCodeLogic.ParseAndRunIntCode(intCode, inputs)
            .ToEnumerable()
            .Single(x => !x.IsComplete)
            .Output
            .Should().Be(expectedOutput);
        }
Esempio n. 9
0
        public void Day09Examples_RelativeInputOutput(string intCode)
        {
            const int input = 1;

            var inputs = new Queue <long>().WithValues(input);

            IntCodeLogic.ParseAndRunIntCode(intCode, inputs)
            .ToEnumerable()
            .Single(x => !x.IsComplete)
            .Output
            .Should().Be(input);
        }
Esempio n. 10
0
        public static long Part1()
        {
            var lines  = FileReader.ReadInputLines(5).ToList();
            var inputs = new Queue <long>().WithValues(1);
            var output = IntCodeLogic.ParseAndRunIntCode(lines.First(), inputs).ToEnumerable().ToList();

            if (output.Count(x => !x.IsComplete && x.Output != 0) != 1)
            {
                throw new Exception($"Some Tests Failed: See output {output}");
            }

            return(output.Single(x => x.Output != 0 && !x.IsComplete).Output ?? -1);
        }
Esempio n. 11
0
        public void Comparators_Example(int input, int expectedOutput)
        {
            const string code =
                "3,21,1008,21,8,20,1005,20,22,107,8,21,20,1006,20,31, 1106,0,36,98,0,0,1002,21,125,20,4,20,1105,1,46,104, 999,1105,1,46,1101,1000,1,20,4,20,1105,1,46,98,99";

            var inputs = new Queue <long>().WithValues(input);

            IntCodeLogic.ParseAndRunIntCode(code, inputs)
            .ToEnumerable()
            .Single(x => !x.IsComplete)
            .Output
            .Should().Be(expectedOutput);
        }
Esempio n. 12
0
 public void Parse_And_RunIntCode(string intCode, int indexOfCheck, int expectedResult)
 {
     IntCodeLogic.ParseAndRunIntCode(intCode).ToEnumerable().Last().CurrentState.Skip(indexOfCheck).First().Should().Be(expectedResult);
 }