Advent of Code 2023 Day 2 Part 2
Mix.install([
{:kino_aoc, "~> 0.1"}
])
Get Inputs
{:ok, puzzle_input} =
KinoAOC.download_puzzle("2023", "2", System.fetch_env!("LB_SESSION"))
My answer
games =
puzzle_input
|> String.split("\n")
|> Enum.into(%{}, fn line ->
[title, items] = String.split(line, ":")
game_num =
title
|> String.replace("Game ", "")
|> String.to_integer()
game =
items
|> String.split(";")
|> Enum.map(fn subsets ->
subsets
|> String.split(",")
|> Enum.into(%{}, fn subset ->
[_, number, color] = String.split(subset, " ")
{color, String.to_integer(number)}
end)
end)
{game_num, game}
end)
games
|> Enum.map(fn {_game_num, game} ->
["red", "green", "blue"]
|> Enum.map(fn color ->
game
|> Enum.map(&Map.get(&1, color, 0))
|> Enum.max()
end)
|> Enum.product()
end)
|> Enum.sum()