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);
        }
Beispiel #3
0
        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));
 }