Day 6
This commit is contained in:
parent
ac51a553e6
commit
75745b42b7
|
@ -0,0 +1,61 @@
|
||||||
|
defmodule Day6 do
|
||||||
|
@example """
|
||||||
|
abc
|
||||||
|
|
||||||
|
a
|
||||||
|
b
|
||||||
|
c
|
||||||
|
|
||||||
|
ab
|
||||||
|
ac
|
||||||
|
|
||||||
|
a
|
||||||
|
a
|
||||||
|
a
|
||||||
|
a
|
||||||
|
|
||||||
|
b
|
||||||
|
"""
|
||||||
|
|
||||||
|
def part1(example \\ false) do
|
||||||
|
parse_input(example)
|
||||||
|
|> Enum.map(&questions_with_any_yes/1)
|
||||||
|
|> Enum.map(&MapSet.size/1)
|
||||||
|
|> Enum.sum()
|
||||||
|
end
|
||||||
|
|
||||||
|
def part2(example \\ false) do
|
||||||
|
parse_input(example)
|
||||||
|
|> Enum.map(&questions_with_all_yes/1)
|
||||||
|
|> Enum.map(&MapSet.size/1)
|
||||||
|
|> Enum.sum()
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse_input(example) do
|
||||||
|
if(example, do: @example, else: File.read!("lib/day6/input.txt"))
|
||||||
|
|> String.trim()
|
||||||
|
|> String.split("\n\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
def questions_with_any_yes(str) do
|
||||||
|
str
|
||||||
|
|> String.replace(~r/\s/, "")
|
||||||
|
|> String.to_charlist()
|
||||||
|
|> MapSet.new()
|
||||||
|
end
|
||||||
|
|
||||||
|
def questions_with_all_yes(str) do
|
||||||
|
people =
|
||||||
|
str
|
||||||
|
|> String.split("\n")
|
||||||
|
|> Enum.map(fn person ->
|
||||||
|
person
|
||||||
|
|> String.to_charlist()
|
||||||
|
|> MapSet.new()
|
||||||
|
end)
|
||||||
|
|
||||||
|
people
|
||||||
|
|> Enum.drop(1)
|
||||||
|
|> Enum.reduce(List.first(people), &MapSet.intersection/2)
|
||||||
|
end
|
||||||
|
end
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue