[2019][ruby] simplify getting the parameter mode

master
Alpha Chen 5 years ago
parent a28f8de0b2
commit 2329172f86

@ -95,11 +95,12 @@ class Computer
@pc += 1 @pc += 1
n = opcode.arity - 3 n = opcode.arity - 3
args = (0...n).zip(T.must(instruction[0..2]).reverse.chars.map(&:to_i)).map {|i, mode| args = (0...n).map {|i|
mode = instruction[2-i] { ?0 }
value = @memory.fetch(@pc + i) || 0 value = @memory.fetch(@pc + i) || 0
mode = case mode mode = case mode
when 0 then Mode::Position when ?0 then Mode::Position
when 1 then Mode::Immediate when ?1 then Mode::Immediate
else fail "unexpected mode: #{mode}" else fail "unexpected mode: #{mode}"
end end
Parameter.new(mode, value) Parameter.new(mode, value)

Loading…
Cancel
Save