This is the Interpreter problem. The idea is it's a computer where a list of commands are read from RAM and processed with a set of instructions and registers.
The input file is a list of commands read into RAM that are then processed according to these rules
I have main do a little bit of the work in this problem. It basically iterates through the commands in RAM, the trouble is some of the commands change the instruction pointer to a new location in RAM. I feel like my logic is a little messy with those tasks. There is a class called RamProcessor that handles each command, but the instance also keeps track of the instruction pointer.
I just treated the commands as regular integers, and then every result was processed as modulo 1000 to keep it to three digits, or roll-over.
See full code on my GitHub