import AOC

aoc 2015, 2 do
  def dimensions_stream(),
    do:
      input_stream()
      |> Stream.map(fn line ->
        [l, w, h] = String.split(line, "x") |> Enum.map(&String.to_integer/1)
        {l, w, h}
      end)

  def p1 do
    dimensions_stream()
    |> Stream.map(fn {l, w, h} ->
      a = l * w
      b = w * h
      c = h * l
      2 * a + 2 * b + 2 * c + Enum.min([a, b, c])
    end)
    |> Enum.sum()
  end

  def p2 do
    dimensions_stream()
    |> Stream.map(fn {l, w, h} ->
      [x, y | _] = Enum.sort([l, w, h])

      2 * x + 2 * y + l * w * h
    end)
    |> Enum.sum()
  end
end