$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{闘魂とは己に打ち克つこと。}$
$\huge{そして闘いを通じて己の魂を磨いていく}$
$\huge{ことだと思います}$
はじめに
というわけで @torifukukaiou さんのフォロワーです
パク リスペクトです
Elixir Livebook で Advent of Code 2023 の問題を解いてみます
実装したノートブックはこちら
問題はこちら
セットアップ
Advent of Code 専用の Livebook 用モジュールが存在ます
その名も Kino AOC です
Mix.install([
{:kino_aoc, "~> 0.1.5"}
])
入力の取得
Kino AOC をインストールすると、 Advent of Code Helper のスマートセルが使えるようになります
スマートセルを追加すると以下のようなフォームが表示されます
YEAR と DAY をドロップダウンから選択します
SESSION の値は、というと思い切った方法で取得します
Advent of Code のサイトにログインしたあと、開発者ツールで Cookie を参照し、 session
に格納されている値をコピーしてください
Livebook で SESSION
の入力エリアをクリックするとモーダルが開きます
Name に適当な値を入力し、 Value にコピーした値を貼り付けて +Add ボタンをクリックします
これで準備完了です
スマートセルの左上 Evaluate をクリックしてください
以下のようにパズルの入力が取得できています
スマートセルの ASSIGN TO で指定した変数に値が入っています
puzzle_input
実行結果
"9dlvndqbddghpxc\nrtkrbtthree8sixfoureight6...
私の答え
私の答えです。
折りたたんでおきます。
▶を押して開いてください。
details
puzzle_input
|> String.split("\n")
|> Enum.map(fn line ->
digits = Regex.scan(~r/[0-9]/, line)
first = digits |> hd() |> hd()
last = digits |> Enum.reverse() |> hd() |> hd()
String.to_integer(first <> last)
end)
|> Enum.sum()
正規表現で数字を抜き出し、先頭と末尾を結合しました
まとめ
Advent of Code のためのモジュールまであるとは、さすが Livebook です
Day 1 Part 2 はこちら