aboutsummaryrefslogtreecommitdiff
path: root/day05/part2
diff options
context:
space:
mode:
authorNat Lasseter <user@4574.co.uk>2018-12-05 10:08:04 +0000
committerNat Lasseter <user@4574.co.uk>2018-12-05 10:08:04 +0000
commitcd5acc649c31f299f16ec1e205a752e19b908bc5 (patch)
treedfdf3e54969f88cf73b6d6bdbfe721c27ba0dc96 /day05/part2
parent76056832683da277b2c68794cd49897da711d456 (diff)
[day05] done, naïve and slow
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