private long GetPart1Solution() { List <int> freshInitialState = _initialState.GetRange(0, _initialState.Count); IntcodeVirtualMachine intMachine = new IntcodeVirtualMachine(freshInitialState); return(intMachine.Run()); }
public void ShouldUseAsyncOutputProvider() { // Arrange int input = 99798; int expected = input; List <int> program = new List <int>() { 3, 0, 4, 0, 99 }; BufferBlock <long> inputBuffer = new BufferBlock <long>(); BufferBlock <long> outputBuffer = new BufferBlock <long>(); IInputProvider inputProvider = new BufferInputProvider(inputBuffer); IOutputProvider outputProvider = new BufferOutputProvider(outputBuffer); IntcodeVirtualMachine virtualMachine = new IntcodeVirtualMachine(program, inputProvider, outputProvider); // Act var vmTask = Task.Run(() => { virtualMachine.Run(); }); inputBuffer.Post(input); vmTask.Wait(); // Assert long actual = outputBuffer.Receive(); Assert.Equal(expected, actual); }
public void Run() { Stopwatch stopWatch = Stopwatch.StartNew(); List <int> program = SharedLibrary.FileParser.GetIntCodeFromFile(@"Inputs\Day05Input.txt"); Console.WriteLine($"=====Day 5, part 1====="); IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long>() { 1 }), new FileOutputProvider("Day5Part1.txt")); intcodeVirtualMachine.Run(); Console.WriteLine($"Output = {System.IO.File.ReadAllText("Day5Part1.txt")}"); program = SharedLibrary.FileParser.GetIntCodeFromFile(@"Inputs\Day05Input.txt"); Console.WriteLine($"=====Day 5, part 2====="); intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long>() { 5 }), new FileOutputProvider("Day5Part2.txt")); intcodeVirtualMachine.Run(); Console.WriteLine($"Output = {System.IO.File.ReadAllText("Day5Part2.txt")}"); Console.WriteLine(""); Console.WriteLine($"Day 5 completed in {stopWatch.ElapsedMilliseconds} ms"); Console.WriteLine(); Console.WriteLine(); }
public void ShouldCalculateTheCorrectResultForPart1() { List <int> program = SharedLibrary.FileParser.GetIntCodeFromFile(@"Inputs\Day02Input.txt"); IntcodeVirtualMachine intMachine = new IntcodeVirtualMachine(program); long actual = intMachine.Run(); Assert.Equal(4570637, actual); }
private long GetPart2Solution() { List <int> program = SharedLibrary.FileParser.GetIntCodeFromFile(@"Inputs\Day09Input.txt"); Queue <long> outputQueue = new Queue <long>(); IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long> { 2 }), new QueueOutputProvider(outputQueue)); intcodeVirtualMachine.Run(); return(outputQueue.Dequeue()); }
public void ShouldCorrectlyCalculatePart2Solution() { long expected = 72852; List <int> program = SharedLibrary.FileParser.GetIntCodeFromFile(@"Inputs\Day09Input.txt"); Queue <long> outputQueue = new Queue <long>(); IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long> { 2 }), new QueueOutputProvider(outputQueue)); intcodeVirtualMachine.Run(); Assert.Equal(expected, outputQueue.Dequeue()); }
public void ShouldReturnDay2AsAsync() { // Arrange List <int> program = SharedLibrary.FileParser.GetIntCodeFromFile(@"Inputs\Day02Input.txt"); // Act IntcodeVirtualMachine intMachine = new IntcodeVirtualMachine(program); long actual = 0; var runningTask = Task.Run(() => { actual = intMachine.Run(); }); runningTask.Wait(); // Assert Assert.Equal(4570637, actual); }
public void ShouldCorrectlyRunExample2() { List <int> program = new List <int>() { 1002, 4, 3, 4, 33 }; IntcodeVirtualMachine virtualMachine = new IntcodeVirtualMachine(program); virtualMachine.Run(); List <long> expected = new List <long>() { 1002, 4, 3, 4, 99 }; Assert.Equal(expected, virtualMachine.GetState()); }
public void ShouldCorrectlyCalculatePart1() { string filename = @"Day5Part1.txt"; List <int> program = SharedLibrary.FileParser.GetIntCodeFromFile(@"Inputs\Day05Input.txt"); int expected = 4887191; IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long>() { 1 }), new FileOutputProvider(filename)); intcodeVirtualMachine.Run(); string actual = System.IO.File.ReadAllText(filename); Assert.Equal(expected.ToString(), actual); }
public void ShouldCorrectlyCalculateExample2_Test() { string filename = System.IO.Path.GetTempFileName(); List <long> program = new List <long>() { 1102, 34915192, 34915192, 7, 4, 7, 99, 0 }; IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long>() { }), new FileOutputProvider(filename)); intcodeVirtualMachine.Run(); string actual = System.IO.File.ReadAllText(filename); Assert.Equal(16, actual.Length); }
public void ShouldCorrectlyCalculateExample5() { List <int> opcodes = new List <int>() { 1, 1, 1, 4, 99, 5, 6, 0, 99 }; IntcodeVirtualMachine intMachine = new IntcodeVirtualMachine(opcodes); intMachine.Run(); List <long> actual = intMachine.GetState(); List <long> expected = new List <long>() { 30, 1, 1, 4, 2, 5, 6, 0, 99 }; Assert.Equal(expected, actual); }
public void ShouldCorrectlyCalculateExample1() { List <int> opcodes = new List <int>() { 1, 9, 10, 3, 2, 3, 11, 0, 99, 30, 40, 50 }; IntcodeVirtualMachine intMachine = new IntcodeVirtualMachine(opcodes); intMachine.Run(); List <long> actual = intMachine.GetState(); List <long> expected = new List <long>() { 3500, 9, 10, 70, 2, 3, 11, 0, 99, 30, 40, 50 }; Assert.Equal(expected, actual); }
public void ShouldCorrectlyCalculateExample4() { List <int> opcodes = new List <int>() { 2, 4, 4, 5, 99, 0 }; IntcodeVirtualMachine intMachine = new IntcodeVirtualMachine(opcodes); intMachine.Run(); List <long> actual = intMachine.GetState(); List <long> expected = new List <long>() { 2, 4, 4, 5, 99, 9801 }; Assert.Equal(expected, actual); }
public void ShouldCorrectlyCalculateExample3_Test() { string filename = System.IO.Path.GetTempFileName(); List <long> program = new List <long>() { 104, 1125899906842624, 99 }; IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long>() { }), new FileOutputProvider(filename)); intcodeVirtualMachine.Run(); string actual = System.IO.File.ReadAllText(filename); Assert.Equal("1125899906842624", actual); }
public void ShouldCalculatePart2JumpExamplesInImmediateMode(int input, int expected) { List <int> program = new List <int>() { 3, 3, 1105, -1, 9, 1101, 0, 0, 12, 4, 12, 99, 1 }; string filename = $"Day5Part2JumpImmediate_{input}.txt"; IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long>() { input }), new FileOutputProvider(filename)); intcodeVirtualMachine.Run(); string actual = System.IO.File.ReadAllText(filename); Assert.Equal(expected.ToString(), actual); System.IO.File.Delete(filename); }
private int GetPart2Solution() { for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) { List <int> freshInitialState = _initialState.GetRange(0, _initialState.Count); freshInitialState[1] = i; freshInitialState[2] = j; IntcodeVirtualMachine intMachine = new IntcodeVirtualMachine(freshInitialState); long result = intMachine.Run(); if (result == 19690720) { return((100 * i) + j); } } } return(0); }
public void ShouldCorrectlyCalculateExample1_Test() { List <long> program = new List <long>() { 109, 1, 204, -1, 1001, 100, 1, 100, 1008, 100, 16, 101, 1006, 101, 0, 99 }; List <long> expected = new List <long>() { 109, 1, 204, -1, 1001, 100, 1, 100, 1008, 100, 16, 101, 1006, 101, 0, 99 }; Queue <long> outputQueue = new Queue <long>(); IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long>() { }), new QueueOutputProvider(outputQueue)); intcodeVirtualMachine.Run(); Assert.Equal(expected, outputQueue.ToList()); }
public void ShouldCalculatePart2LongJumpExample(int input, int expected) { List <int> program = new List <int>() { 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 }; string filename = $"Day5Part2LongerJump_{input}.txt"; IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long>() { input }), new FileOutputProvider(filename)); intcodeVirtualMachine.Run(); string actual = System.IO.File.ReadAllText(filename); Assert.Equal(expected.ToString(), actual); System.IO.File.Delete(filename); }
public void ShouldCalculateLessThanOperatorInImmediateMode(int input, int expected) { List <int> program = new List <int>() { 3, 3, 1107, -1, 8, 3, 4, 3, 99 }; string filename = $"ShouldCalculateLessThanOperatorInPositionMode.txt"; IntcodeVirtualMachine intcodeVirtualMachine = new IntcodeVirtualMachine(program, new StaticInputProvider(new List <long>() { input }), new FileOutputProvider(filename)); intcodeVirtualMachine.Run(); string actual = System.IO.File.ReadAllText(filename); Assert.Equal(expected.ToString(), actual); System.IO.File.Delete(filename); }
public void ShouldCorrectlyRunExample1() { string filename = "Example1.txt"; int theNumber = 99798; List <int> program = new List <int>() { 3, 0, 4, 0, 99 }; IInputProvider inputProvider = new StaticInputProvider(new List <long>() { theNumber }); IOutputProvider outputProvider = new FileOutputProvider(filename); IntcodeVirtualMachine virtualMachine = new IntcodeVirtualMachine(program, inputProvider, outputProvider); virtualMachine.Run(); string actual = System.IO.File.ReadAllText(filename); Assert.Equal(theNumber.ToString(), actual); }
public int Run() { _intcodeVirtualMachine.Run(); return(int.Parse(File.ReadAllText(_filename))); }
public int GetInitialBlockCount() { _vm.Run(); _controller.ReadState(); return(_controller.NumberOfBlocks); }