示例#1
0
        public int Process(int[] p_input)
        {
            for (int i = 0; i < p_input.Length; i++)
            {
                int                possibleOpCode = p_input[i];
                OpCode             opCode         = IdentifyOpCode(possibleOpCode);
                OperationParamters parameters     = new OperationParamters();

                switch (opCode)
                {
                case OpCode.ADD:
                    parameters = DetermineParameters(p_input, i);
                    ExecuteAddOperation(ref p_input, parameters);
                    i += 3;
                    break;

                case OpCode.MULTIPLY:
                    parameters = DetermineParameters(p_input, i);
                    ExecuteMultiplyOperation(ref p_input, parameters);
                    i += 3;
                    break;

                case OpCode.END:
                    return(p_input[0]);

                case OpCode.INVALID:
                    throw new Exception($"INVALID OPCODE AT INDEX {i}");
                }
            }

            return(-1);
        }
示例#2
0
 public void ExecuteMultiplyOperation(ref int[] p_input, OperationParamters p_parameters)
 {
     p_input[p_parameters.IndexOfResult] = p_input[p_parameters.Parameter1] * p_input[p_parameters.Parameter2];
 }