Advent Of Code Day 1
Part 1
test_data = [
199,
200,
208,
210,
200,
207,
240,
269,
260,
263
]
defmodule Part1 do
def increase_count(data) when is_list(data) do
Enum.reduce(data, {nil, 0}, fn
element, {nil, count} ->
{element, count}
element, {previous_element, count} ->
if element > previous_element do
{element, count + 1}
else
{element, count}
end
end)
|> elem(1)
end
end
Part1.increase_count(test_data)
7
data =
"day_01/input.txt"
|> File.read!()
|> String.split()
|> Enum.map(&String.to_integer/1)
[151, 152, 153, 158, 159, 163, 164, 162, 161, 167, 169, 168, 169, 170, 164, 175, 176, 178, 187, 186,
193, 188, 192, 203, 206, 218, 215, 239, 243, 244, 238, 239, 240, 229, 245, 247, 255, 244, 250, 256,
257, 263, 265, 267, 266, 267, 268, 271, 277, 278, ...]
Part1.increase_count(data)
1564
Part 2
defmodule Part2 do
def sliding_increase(data) when is_list(data) do
[_ | data_two] = data
[_ | data_three] = data_two
[data, data_two, data_three]
|> Enum.zip()
|> Enum.map(fn {a, b, c} -> a + b + c end)
|> Part1.increase_count()
end
end
Part2.sliding_increase(test_data)
{199, 269}