#!/usr/bin/env ruby def valof(reg_file, reg_or_int) if reg_or_int >= 'a' && reg_or_int <= 'z' then return reg_file[reg_or_int] || 0 end return reg_or_int.to_i end input = $stdin.readlines.map(&:chomp) reg = {} snd = 0 pc = 0 loop do break if pc >= input.length istr = input[pc].split case istr[0] when 'snd' snd = valof(reg, istr[1]) when 'set' reg[istr[1]] = valof(reg, istr[2]) when 'add' reg[istr[1]] = valof(reg, istr[1]) + valof(reg, istr[2]) when 'mul' reg[istr[1]] = valof(reg, istr[1]) * valof(reg, istr[2]) when 'mod' reg[istr[1]] = valof(reg, istr[1]) % valof(reg, istr[2]) when 'rcv' unless valof(reg, istr[1]) == 0 then puts snd break end when 'jgz' if valof(reg, istr[1]) > 0 then pc += valof(reg, istr[2]) pc -= 1 end end pc += 1 end