From eb17b2431a8c591b64559962afbd88fd64b868ca Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Mon, 14 Dec 2020 21:24:58 -0800 Subject: [PATCH] Day 15 Part 1 --- 2020/day15/day15.ex | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 2020/day15/day15.ex diff --git a/2020/day15/day15.ex b/2020/day15/day15.ex new file mode 100644 index 0000000..d0d7a8f --- /dev/null +++ b/2020/day15/day15.ex @@ -0,0 +1,45 @@ +defmodule Day15 do + defp read_input do + Path.expand('input', Path.dirname(__ENV__.file)) + |> File.read!() + end + + defp test_input do + """ + 0,3,6 + """ + end + + defp parse_numbers(text) do + text + |> String.trim() + |> String.split(",") + |> Enum.map(&String.to_integer/1) + end + + defp next([previous | rest]) do + {_, idx} = + rest + |> Enum.with_index() + |> Enum.find({previous, -1}, fn {num, idx} -> num == previous end) + + idx + 1 + end + + defp run(log, limit) do + if Enum.count(log) == limit do + Enum.at(log, 0) + else + run([next(log) | log], limit) + end + end + + def part1 do + read_input() + |> parse_numbers() + |> Enum.reverse() + |> run(2020) + end +end + +Day15.part1() |> IO.inspect()