diff --git a/ruby/day_19.rb b/ruby/day_19.rb index a7d9db4..aeb9019 100644 --- a/ruby/day_19.rb +++ b/ruby/day_19.rb @@ -1,11 +1,14 @@ replacements, molecule = DATA.read.chomp.split("\n\n") -replacements = replacements.scan(/(\w+) \=> (\w+)/) -puts replacements.flat_map {|k,v| - m = molecule.split(k, -1) - (0...m.size-1).map {|i| - m[0..i].join(k) + v + m[i+1..-1].join(k) - } -}.uniq.size +replacements = replacements.scan(/(\w+) \=> (\w+)/).map(&:reverse).sort_by {|k,_| -k.size} + +steps = 0 +until molecule == ?e + k,v = replacements.find {|k,_| molecule.include?(k) } + steps += molecule.scan(/#{k}/).size + + molecule.gsub!(k, v) + puts "#{steps}: #{molecule}" +end __END__ Al => ThF Al => ThRnFAr