aboutsummaryrefslogtreecommitdiffstats
path: root/AoC2022/06/solver.exs
diff options
context:
space:
mode:
Diffstat (limited to 'AoC2022/06/solver.exs')
-rw-r--r--AoC2022/06/solver.exs27
1 files changed, 27 insertions, 0 deletions
diff --git a/AoC2022/06/solver.exs b/AoC2022/06/solver.exs
new file mode 100644
index 0000000..3d47677
--- /dev/null
+++ b/AoC2022/06/solver.exs
@@ -0,0 +1,27 @@
+defmodule Solver.Day6 do
+ def marker([_h | tail] = line, distinct, counter) do
+ line
+ |> Enum.take(distinct)
+ |> MapSet.new()
+ |> MapSet.size()
+ |> Kernel.then(fn amount ->
+ case amount do
+ ^distinct -> counter
+ _ -> marker(tail, distinct, counter + 1)
+ end
+ end)
+ end
+
+ def start(msg, distinct) do
+ String.graphemes(msg) |> marker(distinct, distinct) |> IO.puts()
+ end
+end
+
+case File.read("input") do
+ {:ok, body} ->
+ Solver.Day6.start(body, 4)
+ Solver.Day6.start(body, 14)
+
+ {:error, reason} ->
+ IO.puts(reason)
+end