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); }
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]; }