$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{闘魂とは己に打ち克つこと。}$
$\huge{そして闘いを通じて己の魂を磨いていく}$
$\huge{ことだと思います}$
はじめに
@torifukukaiou さんの パク リスペクト記事です
Elixir Livebook で Advent of Code 2023 の問題を解いてみます
実装したノートブックはこちら
問題はこちら
Part 1 はこちら
セットアップ
Kino AOC をインストールします
Mix.install([
{:kino_aoc, "~> 0.1.5"}
])
Kino AOC の使い方はこちらを参照
入力の取得
Day 6 の入力を取得します
私の答え
私の答えです。
折りたたんでおきます。
▶を押して開いてください。
details
回答用のモジュールです
入力を扱いやすい形にするための parse
と、回答を作るための resolve
関数を持っています
defmodule Resolver do
def parse(input) do
input
|> String.split("\n")
|> Enum.map(fn line ->
line
|> String.split(" ", trim: true)
|> tl()
|> Enum.join()
|> String.to_integer()
end)
|> then(fn [time, distance] ->
%{
time: time,
distance: distance
}
end)
end
def resolve(%{time: time, distance: distance}) do
1..(time - 1)
|> Enum.count(fn boost ->
(time - boost) * boost > distance
end)
end
end
入力を以下のようにパースします
入力
Time: 7 15 30
Distance: 9 40 200
パース結果
%{time: 71530, distance: 940200}
各値について、スペースを排除して結合し、一つの数字にしています
resolve
は Part 1 の Enum.map
を外しただけのものです
まとめ
まさか Part 2 が Part 1 より簡単になるとは