かくとだにえやはいぶきのさしも草さしも知らじなもゆる思ひを
Advent Calendar 2022 103日目1の記事です。
I'm looking forward to 12/25,2022
私のAdvent Calendar 2022 一覧。
はじめに
この記事は、Advent Of Code 2021 Day 2: Dive!をElixirで楽しんでみます。
私はGitHubでログインしました。
私の回答
私の回答です。
私の回答
input
はサンプルです。
ログインをすると、たくさんあるインプットデータがみえます。
Part 1
input = """
forward 5
down 5
forward 8
up 3
down 8
forward 2
"""
v = input
|> String.split
|> Enum.chunk_every(2)
|> Enum.reduce(%{}, fn [key, value], acc ->
Map.update(acc, key, String.to_integer(value), & &1 + String.to_integer(value))
end)
(v["down"] - v["up"]) * v["forward"]
Part 2
v = input
|> String.split
|> Enum.chunk_every(2)
|> Enum.map(fn [key, value] -> {key, String.to_integer(value)} end)
|> Enum.reduce(%{"forward" => 0, "aim" => 0, "depth" => 0}, fn
{"forward", v}, acc -> Map.update(acc, "forward", v, & &1 + v) |> Map.update("depth", v * acc["aim"], & &1 + v * acc["aim"])
{"down", v}, acc -> Map.update(acc, "aim", v, & &1 + v)
{"up", v}, acc -> Map.update(acc, "aim", -v, & &1 - v)
end
)
v["forward"] * v["depth"]
It works!
Amazing!
お手本
José ValimさんがLivebook楽しまれている動画があります。
José Valimさんは、Elixirの作者です!
お手本
Part 1
input
|> String.split("\n", trim: true)
|> Enum.reduce({_depth = 0, _position = 0}, fn
"forward " <> number, {depth, position} ->
{depth, String.to_integer(number) + position}
"down " <> number, {depth, position} ->
{String.to_integer(number) + depth, position}
"up " <> number, {depth, position} ->
{-String.to_integer(number) + depth, position}
end)
|> then(fn {depth, position} -> depth * position end)
Part 2
input
|> String.split("\n", trim: true)
|> Enum.reduce({_depth = 0, _position = 0, _aim = 0}, fn
"forward " <> number, {depth, position, aim} ->
number = String.to_integer(number)
{depth + aim * number, number + position, aim}
"down " <> number, {depth, position, aim} ->
{depth, position, aim + String.to_integer(number)}
"up " <> number, {depth, position, aim} ->
{depth, position, aim - String.to_integer(number)}
end)
|> then(fn {depth, position, _aim} -> depth * position end)
Wrapping up
Advent Of Code 2021 Day 2: Dive!をElixirで楽しんでみました。
Day 25まであるので引き続き楽しんでいきたいとおもいます。
It works!
Amazing!
自分で解いてみて、動画をみてJosé Valimさんに特別家庭教師をしてもらっている気に勝手になっています 。
Enjoy Elixir
$\huge{Enjoy\ Elixir🚀}$
以上です。
I organize autoracex.
And I take part in NervesJP, fukuoka.ex, EDI, tokyo.ex, Pelemay.
I hope someday you'll join us.
We Are The Alchemists, my friends!
We appreciate this shoutout, Torifuku! pic.twitter.com/dThmJg4CYN
— ClickUp (@clickup) April 11, 2022