Watch
1
0
Fork
You've already forked advent-of-code
0
advent-of-code/2020/day6/day6.ex
2021-12-04 21:20:57 -08:00

37 lines
870 B
Elixir

defmodule Day6 do
defp read_input do
Path.expand('input', Path.dirname(__ENV__.file))
|> File.read!()
end
def part1 do
read_input()
|> String.split("\n\n")
|> Enum.map(fn block ->
String.split(block)
|> Enum.reduce(MapSet.new(), fn line, set ->
MapSet.union(set, MapSet.new(String.codepoints(line)))
end)
end)
|> Enum.map(&MapSet.size/1)
|> Enum.sum()
end
def part2 do
alphabet = String.codepoints("abcdefghijklmnopqrstuvwxyz")
read_input()
|> String.split("\n\n")
|> Enum.map(fn block ->
String.split(block)
|> Enum.reduce(MapSet.new(alphabet), fn line, set ->
MapSet.intersection(set, MapSet.new(String.codepoints(line)))
end)
end)
|> Enum.map(&MapSet.size/1)
|> Enum.sum()
end
end
Day6.part1() |> IO.inspect()
Day6.part2() |> IO.inspect()