Beispiel #1
0
        long GetMemory(IntCodeParamMode paramMode, long address)
        {
            long value;

            switch (paramMode)
            {
            default:
            case IntCodeParamMode.Position:
                value = _codes[address];
                value = _codes[value];
                break;

            case IntCodeParamMode.Immediate:
                value = _codes[address];
                break;

            case IntCodeParamMode.Relative:
                value = _codes[address];
                value = _codes[_base + value];
                break;
            }
            ;

            return(value);
        }
Beispiel #2
0
 internal IntCodeOperation(
     IntCodeOperator oper,
     IntCodeParamMode paramA = IntCodeParamMode.Position,
     IntCodeParamMode paramB = IntCodeParamMode.Position,
     IntCodeParamMode paramC = IntCodeParamMode.Position)
     : this()
 {
     Operator   = oper;
     ParameterA = paramA;
     ParameterB = paramB;
     ParameterC = paramC;
 }
Beispiel #3
0
        void SetMemory(IntCodeParamMode paramMode, long address, long value)
        {
            switch (paramMode)
            {
            default:
            case IntCodeParamMode.Position:
                address         = _codes[address];
                _codes[address] = value;
                break;

            case IntCodeParamMode.Immediate:
                _codes[address] = value;
                break;

            case IntCodeParamMode.Relative:
                address = _codes[address];
                _codes[_base + address] = value;
                break;
            }
            ;
        }