diff options
author | Nat Lasseter <user@4574.co.uk> | 2018-12-05 10:08:04 +0000 |
---|---|---|
committer | Nat Lasseter <user@4574.co.uk> | 2018-12-05 10:08:04 +0000 |
commit | cd5acc649c31f299f16ec1e205a752e19b908bc5 (patch) | |
tree | dfdf3e54969f88cf73b6d6bdbfe721c27ba0dc96 /day05/part2 | |
parent | 76056832683da277b2c68794cd49897da711d456 (diff) |
[day05] done, naïve and slow
Diffstat (limited to 'day05/part2')
-rwxr-xr-x | day05/part2 | 34 |
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 |