Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Day 8: Matchsticks

elixir/day_8_matchsticks.livemd

Day 8: Matchsticks

Section

defmodule P1 do
  def count_esc(str), do: do_count_chrs(String.to_charlist(str), 0)

  defp do_count_chrs([], count), do: count
  defp do_count_chrs([92, 92 | rest], count), do: do_count_chrs(rest, count + 1)
  defp do_count_chrs([92, 34 | rest], count), do: do_count_chrs(rest, count + 1)
  defp do_count_chrs([92, 120, _, _ | rest], count), do: do_count_chrs(rest, count + 1)
  defp do_count_chrs([_ | rest], count), do: do_count_chrs(rest, count + 1)
end

"/Users/eli/Desktop/input.txt"
|> File.read!()
|> String.split("\n", trim: true)
|> Enum.map(fn x -> String.length(x) - P1.count_esc(x) + 2 end)
|> Enum.sum()
1342
defmodule P2 do
  def count_esc(str), do: do_count_chrs(String.to_charlist(str), 0)

  defp do_count_chrs([], count), do: count
  defp do_count_chrs([92 | rest], count), do: do_count_chrs(rest, count + 1)
  defp do_count_chrs([34 | rest], count), do: do_count_chrs(rest, count + 1)
  defp do_count_chrs([_ | rest], count), do: do_count_chrs(rest, count)
end

"/Users/eli/Desktop/input.txt"
|> File.read!()
|> String.split("\n", trim: true)
|> Enum.map(fn x -> 2 + P2.count_esc(x) end)
|> Enum.sum()
2074