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