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); }
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()); }
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); }
/// <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 )); }
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 + ","); }
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); }
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); }
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); }
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); }
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); }
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); }
public void Parse_And_RunIntCode(string intCode, int indexOfCheck, int expectedResult) { IntCodeLogic.ParseAndRunIntCode(intCode).ToEnumerable().Last().CurrentState.Skip(indexOfCheck).First().Should().Be(expectedResult); }