diff --git a/day5.cr b/day5.cr new file mode 100644 index 0000000..a98a36b --- /dev/null +++ b/day5.cr @@ -0,0 +1,42 @@ +require "./common.cr" + +lines = File.read("day5_input").split("\n") + +def react(string) + lower = string.downcase.chars + string = string.chars + + changed = true + while changed + changed = false + i = 0 + while i < string.size - 1 + next_i = i + 1 + if string[i] != string[next_i] && + lower[i] == lower[next_i] + string.delete_at i + string.delete_at i + lower.delete_at i + lower.delete_at i + + i -= 1 + i = 0 if i < 0 + changed = true + else + i += 1 + end + end + end + + return string +end + +puts react(lines[0]).size + +pairs = {} of Tuple(Char, Char) => Int32 +('a'..'z').to_a.zip(('A'..'Z').to_a).each do |pair| + new_string = lines[0].delete(pair[0]).delete(pair[1]) + pairs[pair] = react(new_string).size +end + +puts pairs.values.min