[2018][ruby][5.x]
change mqwtvnomslwwtrxoqxkqwyzzvmovvqkz
commit 3cfed325589a8cff89f587569b751b7d6b82118f
author Alpha Chen <alpha.chen@gmail.com>
date
parent uvprukku
diff --git a/2018/ruby/day_05.rb b/2018/ruby/day_05.rb
new file mode 100644
index 0000000..859e8d6
--- /dev/null
+++ b/2018/ruby/day_05.rb
@@ -0,0 +1,29 @@
+input = ARGF.read.chomp
+
+REGEX = Regexp.new(
+  (?a..?z)
+    .map {|x| [x, x.upcase] }
+    .flat_map(&:permutation)
+    .flat_map(&:to_a)
+    .map(&:join)
+    .join(?|)
+)
+
+def react(polymer)
+  last = nil
+  until polymer == last
+    last = polymer
+    polymer = polymer.gsub(REGEX, "")
+  end
+  polymer
+end
+
+# Part One
+# p react(input).size
+
+# Part Two
+p (?a..?z)
+  .map {|unit| input.gsub(/#{unit}/i, "") }
+  .map {|polymer| react(polymer) }
+  .map {|reacted| reacted.size }
+  .min