はじめに
Advent of code 2024 の準備として、過去回の Advent of code 2015 を Livebook で楽しみます
本記事では Day 3 の Part 1 を解きます
問題文はこちら
実装したノートブックはこちら
セットアップ
Kino AOC をインストールします
Mix.install([
{:kino_aoc, "~> 0.1"}
])
Kino AOC の使い方はこちらを参照
入力の取得
"Advent of Code Helper" スマートセルを追加し、 Day 3 の入力を取得します
私の答え
私の答えです。
折りたたんでおきます。
▶を押して開いてください。
回答
Enum.reduce
で「現在地の座標」 {x, y}
と通過した場所の座標配列 houses
を保持しながら進みます
最後に houses
の重複を排除して個数を算出します
puzzle_input
|> String.codepoints()
|> Enum.reduce({{0, 0}, [{0, 0}]}, fn direction, {{x, y}, houses} ->
new_point =
case direction do
">" -> {x + 1, y}
"<" -> {x - 1, y}
"^" -> {x, y + 1}
_ -> {x, y - 1}
end
{new_point, [new_point | houses]}
end)
|> elem(1)
|> Enum.uniq()
|> length()
まとめ
問題文から ChatGPT に画像を生成してもらいました
少し問題がややこしくなってきましたね
Part 2 はこちら