public void Should_Output16DigitNumber() { var data = new int[] { 1102, 34915192, 34915192, 7, 4, 7, 99, 0 }; var program = IntCodeProgram.New(); program.Compute(IntCodeData.FromIntArray(data)); var number = program.Output.Single(); Assert.Equal(16, number.ToString().Length); }
public void Should_OutputLargeNumberInTheMiddle() { var data = new BigInteger[] { 104, 1125899906842624, 99 }; var program = IntCodeProgram.New(); program.Compute(IntCodeData.FromBigIntArray(data)); var number = program.Output.Single(); Assert.Equal(IntCodeValue.FromBigInteger(data[1]), number); }
private long OpCodeCompute(long noun, long verb) { _numbers = IntCodeData.ToArray(); _numbers[1] = noun; _numbers[2] = verb; var currentIdx = 0; while (_numbers[currentIdx] != 99) { ExecuteInstruction(_numbers[currentIdx], _numbers[currentIdx + 1], _numbers[currentIdx + 2], _numbers[currentIdx + 3]); currentIdx += 4; } return(_numbers[0]); }
private IIntCodeData Parse(StreamReader reader) { return(IntCodeData.FromStreamReader(reader)); }