Finished Day 1 with Elixir
Here’s my code:
#!/usr/bin/env elixir
defmodule Combination do
@doc "Yields each combination of 2"
def c2(list, _fun) when length(list) < 2, do: :ok
def c2([a|tail], fun) do
Enum.each(tail, fn(b)-> fun.(a, b) end)
c2(tail, fun)
end
@doc "Yields each combination of 3"
def c3(list, _fun) when length(list) < 3, do: :ok
def c3([a|tail], fun) do
c2(tail, fn(b, c)-> fun.(a, b, c) end)
c3(tail, fun)
end
end
nums = "./day1.txt"
|> File.stream!([], :line)
|> Stream.map(&String.trim/1)
|> Enum.map(&String.to_integer/1)
Combination.c2(nums, fn(a, b)->
if a + b == 2020 do
IO.inspect(a * b, label: "Part 1")
end
end)
Combination.c3(nums, fn(a, b, c)->
if a + b + c == 2020 do
IO.inspect(a * b * c, label: "Part 2")
end
end)