aboutsummaryrefslogtreecommitdiff
path: root/day05/part2
diff options
context:
space:
mode:
Diffstat (limited to 'day05/part2')
-rwxr-xr-xday05/part234
1 files changed, 34 insertions, 0 deletions
diff --git a/day05/part2 b/day05/part2
new file mode 100755
index 0000000..b71d84e
--- /dev/null
+++ b/day05/part2
@@ -0,0 +1,34 @@
+#!/usr/bin/env ruby
+
+input = gets.chomp.chars
+
+units = input.map(&:downcase).uniq
+lengths = {}
+
+units.each do |unit|
+ polymer = input.dup
+ polymer.delete_if {|u| u == unit || u == unit.upcase}
+ l = polymer.length
+ loop do
+ i = polymer.length - 1
+ loop do
+ break if i < 1
+
+ if polymer[i] == polymer[i-1].swapcase
+ polymer.delete_at(i)
+ polymer.delete_at(i-1)
+ i -= 2
+ else
+ i -= 1
+ end
+ end
+ if polymer.length == l
+ break
+ else
+ l = polymer.length
+ end
+ end
+ lengths[unit] = polymer.length
+end
+
+puts lengths.values.min