add 2021 day 1
This commit is contained in:
parent
d0d8f86ee8
commit
6a55ccc72e
3 changed files with 58 additions and 0 deletions
4
elixir/.formatter.exs
Normal file
4
elixir/.formatter.exs
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# Used by "mix format"
|
||||||
|
[
|
||||||
|
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
|
||||||
|
]
|
3
elixir/.gitignore
vendored
3
elixir/.gitignore
vendored
|
@ -26,3 +26,6 @@ aoc-*.tar
|
||||||
/tmp/
|
/tmp/
|
||||||
|
|
||||||
.session
|
.session
|
||||||
|
|
||||||
|
# Input files
|
||||||
|
*.txt
|
||||||
|
|
51
elixir/lib/Y2021/day1.exs
Normal file
51
elixir/lib/Y2021/day1.exs
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
test_input = [
|
||||||
|
199,
|
||||||
|
200,
|
||||||
|
208,
|
||||||
|
210,
|
||||||
|
200,
|
||||||
|
207,
|
||||||
|
240,
|
||||||
|
269,
|
||||||
|
260,
|
||||||
|
263
|
||||||
|
]
|
||||||
|
|
||||||
|
# part 1 solution
|
||||||
|
solve = fn input ->
|
||||||
|
input
|
||||||
|
|> Stream.chunk_every(2, 1, :discard)
|
||||||
|
|> Stream.map(fn [a,b] -> b - a end)
|
||||||
|
|> Stream.filter(fn a -> a > 0 end)
|
||||||
|
|> Enum.count()
|
||||||
|
end
|
||||||
|
|
||||||
|
# transform problem for part 2
|
||||||
|
window_sum = fn input ->
|
||||||
|
input
|
||||||
|
|> Stream.chunk_every(3, 1, :discard)
|
||||||
|
|> Stream.map(&Enum.sum/1)
|
||||||
|
end
|
||||||
|
|
||||||
|
# verify solution for test input
|
||||||
|
if not(solve.(test_input) == 7) or not(solve.(test_input |> window_sum.()) == 5) do
|
||||||
|
raise "solution doesn't solve test input"
|
||||||
|
end
|
||||||
|
|
||||||
|
# parse input from text data to solve
|
||||||
|
parse = fn input ->
|
||||||
|
input
|
||||||
|
|> Stream.map(&String.trim/1)
|
||||||
|
|> Stream.reject(&(&1 == ""))
|
||||||
|
|> Stream.map(&String.to_integer/1)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
File.stream!("./day1.txt")
|
||||||
|
|> parse.()
|
||||||
|
|> then(fn i ->
|
||||||
|
p1 = i |> solve.()
|
||||||
|
p2 = i |> window_sum.() |> solve.()
|
||||||
|
"p1: #{p1}\tp2: #{p2}"
|
||||||
|
end)
|
||||||
|
|> IO.puts()
|
Loading…
Add table
Reference in a new issue