はじめに
Advent of code 2024 の準備として、過去回の Advent of code 2015 を Livebook で楽しみます
本記事では Day 8 の Part 2 を解きます
問題文はこちら
実装したノートブックはこちら
Part 1 はこちら
セットアップ
Kino AOC をインストールします
Mix.install([
{:kino_aoc, "~> 0.1"}
])
Kino AOC の使い方はこちらを参照
入力の取得
"Advent of Code Helper" スマートセルを追加し、 Day 8 の入力を取得します
私の答え
私の答えです。
折りたたんでおきます。
▶を押して開いてください。
回答
Part 1 の真逆、 Elixir コードを文字列として評価することになります
この操作は Macro.to_string
で実行できます
puzzle_input
|> String.split("\n")
|> Enum.map(fn code ->
string_length =
code
|> Macro.to_string()
|> String.length()
string_length - String.length(code)
end)
|> Enum.sum()
まとめ
メタプログラミングの考え方を知っていれば簡単でした