From d06708a9a2c0507f3a5581a593cc6435d767ed5e Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Wed, 5 Dec 2018 02:12:19 -0500 Subject: oops, forgot to push day 4; here's day 5 too --- day5.exs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 day5.exs (limited to 'day5.exs') diff --git a/day5.exs b/day5.exs new file mode 100644 index 0000000..120f185 --- /dev/null +++ b/day5.exs @@ -0,0 +1,47 @@ +defmodule Day5 do + def input() do + File.stream!("input/day5.in") + |> Stream.map(&String.trim/1) + |> Enum.at(0) + end + + def part1() do + input() + |> String.graphemes() + |> react() + |> Enum.count() + end + + def part2() do + for(n <- ?a..?z, do: <>) + |> Enum.map(fn c -> + input() + |> String.replace(c, "") + |> String.replace(String.upcase(c), "") + |> String.graphemes() + |> react() + end) + |> Enum.min_by(&Enum.count/1) + |> Enum.count() + end + + def react(polymer) do + Enum.reduce(polymer, [], fn + x, [] -> + [x] + + x, [y] -> + [x, y] + + x, [y | ys] -> + if x != y && String.downcase(x) == String.downcase(y) do + ys + else + [x, y | ys] + end + end) + end +end + +IO.puts(Day5.part1()) +IO.puts(Day5.part2()) -- cgit 1.4.1