advent-of-code/2018-elixir/lib/day02.ex
2021-11-01 16:45:03 +01:00

40 lines
792 B
Elixir

defmodule Day02 do
defp parse(data) do
data
|> String.split("\n", trim: true)
|> Enum.map(&String.trim/1)
end
def countn(data, n) do
data
|> Enum.filter(fn s -> MapSet.size(MapSet.new(String.to_charlist(s))) != String.length(s) - n + 1 end)
|> Enum.count
end
def solve(data) do
parsed = data
|> parse
f2 = parsed
|> countn(2)
f3 = parsed
|> countn(3)
f2 * f3
end
def solve_again(data) do
data
|> parse
end
def show do
data = File.read!("data/02.in")
:timer.tc(fn -> solve(data) end)
|> elem(0)
|> Kernel./(1_000_000)
|> IO.inspect
:timer.tc(fn -> solve_again(data) end)
|> elem(0)
|> Kernel./(1_000_000)
|> IO.inspect
end
end