From 5bcd40bef6544ae8185e1eb66170c2551acd86e3 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Tue, 22 Dec 2020 10:08:22 -0800 Subject: [PATCH] [2020][ruby][18] refactor --- 2020/ruby/day_18.rb | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/2020/ruby/day_18.rb b/2020/ruby/day_18.rb index daf50a7..a38654f 100644 --- a/2020/ruby/day_18.rb +++ b/2020/ruby/day_18.rb @@ -35,21 +35,21 @@ def evaluate(input) ss = StringScanner.new(input) until ss.eos? ss.scan(/\s*/) - case - when n = ss.scan(/\d+/) - stack << stack.pop[n.to_i] - when ss.scan(/\+/) - stack << ->(x) { stack.pop + x } - when ss.scan(/\*/) - stack << ->(x) { stack.pop * x } - when ss.scan(/\(/) - stack << ->(x) { x } - when ss.scan(/\)/) - n = stack.pop - stack << stack.pop[n] - else - fail - end + stack << case + when n = ss.scan(/\d+/) + stack.pop[n.to_i] + when ss.scan(/\+/) + ->(x) { stack.pop + x } + when ss.scan(/\*/) + ->(x) { stack.pop * x } + when ss.scan(/\(/) + ->(x) { x } + when ss.scan(/\)/) + n = stack.pop + stack.pop[n] + else + fail + end end stack.pop