From 2fb5e076e0b7f9a40736a36a27bcd6b051f9b56a Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Sat, 16 Dec 2017 16:23:01 -0800 Subject: [PATCH] [2017][ruby][16.x] use StringScanner better --- 2017/ruby/day_16.rb | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/2017/ruby/day_16.rb b/2017/ruby/day_16.rb index ed2290b..9168d28 100644 --- a/2017/ruby/day_16.rb +++ b/2017/ruby/day_16.rb @@ -7,18 +7,13 @@ def run ss = StringScanner.new(@dance) until ss.eos? case - when ss.scan(/s/) - spin = ss.scan(/\d+/).to_i - @programs.rotate!(@programs.size - spin) - when ss.scan(/x/) - a = ss.scan(/\d+/).to_i - ss.scan(/\//) - b = ss.scan(/\d+/).to_i + when ss.scan(/s(\d+)/) + @programs.rotate!(@programs.size - ss[1].to_i) + when ss.scan(/x(\d+)\/(\d+)/) + a, b = ss[1].to_i, ss[2].to_i @programs[a], @programs[b] = @programs[b], @programs[a] - when ss.scan(/p/) - a = @programs.index(ss.scan(/\w/)) - ss.scan(/\//) - b = @programs.index(ss.scan(/\w/)) + when ss.scan(/p(\w)\/(\w)/) + a, b = @programs.index(ss[1]), @programs.index(ss[2]) @programs[a], @programs[b] = @programs[b], @programs[a] when ss.scan(/,/) end