はじめに
Advent of code 2024 の準備として、過去回の Advent of code 2015 を Livebook で楽しみます
本記事では Day 2 の Part 2 を解きます
問題文はこちら
実装したノートブックはこちら
Part 1 はこちら
セットアップ
Kino AOC をインストールします
Mix.install([
{:kino_aoc, "~> 0.1"}
])
Kino AOC の使い方はこちらを参照
入力の取得
"Advent of Code Helper" スマートセルを追加し、 Day 2 の入力を取得します
私の答え
私の答えです。
折りたたんでおきます。
▶を押して開いてください。
回答
最小の外周を求め、蝶々結びに必要な長さ(体積と等しい)と合算します
puzzle_input
|> String.split("\n")
|> Enum.map(fn row ->
[l, w, h] =
row
|> String.split("x")
|> Enum.map(&String.to_integer(&1))
min_length = Enum.min([l + w, w + h, h + l])
2 * min_length + l * w * h
end)
|> Enum.sum()
まとめ
体積と同じだけの長さが必要な蝶々結びは凄そうです
こちらは問題文を元にChat GPT で生成した画像
クリスマスらしくて良いですね