summaryrefslogtreecommitdiff
path: root/aoc_2022/day-05/sol.exs
blob: e1dab2b06d69854514f0a7bc94cc5b244ddea12c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
defmodule Solution do
  def solve(input, chunk) do
    (String.split(input, "", trim: true)
     |> Enum.chunk_every(chunk, 1, :discard)
     |> Enum.map(fn window ->
       Enum.reduce(window, %{}, fn char, acc ->
         Map.put(acc, char, Map.get(acc, char, 0) + 1)
       end)
     end)
     |> Enum.find_index(fn letter_counts ->
       Enum.all?(letter_counts, fn {_key, value} ->
         value == 1
       end)
     end)) + chunk
  end

  def main do
    input = File.read!("input")

    solve(input, 4)
    |> IO.inspect()

    solve(input, 14)
    |> IO.inspect()
  end
end

Solution.main()