やすらはで寝なましものをさ夜ふけてかたぶくまでの月を見しかな
Advent Calendar 2022 111日目1の記事です。
I'm looking forward to 12/25,2022
私のAdvent Calendar 2022 一覧。
はじめに
この記事は、Advent Of Code 2021 Day 10: Syntax ScoringをElixirで楽しんでみます。
私はGitHubでログインしました。
私の回答
私の回答です。
私の回答
input = """
[({(<(())[]>[[{[]{<()<>>
[(()[<>])]({[<{<<[]>>(
{([(<{}[<>[]}>{[]{[(<()>
(((({<>}<{<{<>}{[]{[]{}
[[<[([]))<([[{}[[()]]]
[{[{({}]{}}([{[{{{}}([]
{<[[]]>}<{[{[{[]{()[[[]
[<(<(<(<{}))><([]([]()
<{([([[(<>()){}]>(<<{{
<{([{{}}[<[[[<>{}]]]>[]]
"""
defmodule Recursion do
def recur(list) do
recur(list, [])
end
defp scores([], stack) do
stack
|> Enum.reverse()
|> Enum.reduce(0, fn point, acc ->
5 * acc + point
end)
end
defp scores([?( | tail], stack), do: scores(tail, [1 | stack])
defp scores([?[ | tail], stack), do: scores(tail, [2 | stack])
defp scores([?{ | tail], stack), do: scores(tail, [3 | stack])
defp scores([?< | tail], stack), do: scores(tail, [4 | stack])
defp recur([], stack), do: {:incorrect, scores(stack, [])}
defp recur([head | tail], stack) when head in [?(, ?[, ?{, ?<], do: recur(tail, [head | stack])
defp recur([?) | tail], [?( | stack]), do: recur(tail, stack)
defp recur([?) | _tail], _stack), do: {:corrupted, 3}
defp recur([?] | tail], [?[ | stack]), do: recur(tail, stack)
defp recur([?] | _tail], _stack), do: {:corrupted, 57}
defp recur([?} | tail], [?{ | stack]), do: recur(tail, stack)
defp recur([?} | _tail], _stack), do: {:corrupted, 1197}
defp recur([?> | tail], [?< | stack]), do: recur(tail, stack)
defp recur([?> | _tail], _stack), do: {:corrupted, 25137}
end
Part 1
input
|> String.split("\n", trim: true)
|> Enum.map(fn line ->
line
|> String.to_charlist()
|> Recursion.recur()
end)
|> Enum.reduce(0, fn
{:corrupted, score}, acc -> acc + score
{:incorrect, _score}, acc -> acc
end)
|> IO.inspect()
Part 2
scores =
input
|> String.split("\n", trim: true)
|> Enum.map(fn line ->
line
|> String.to_charlist()
|> Recursion.recur()
end)
|> Enum.reduce([], fn
{:corrupted, _score}, acc -> acc
{:incorrect, score}, acc -> [score | acc]
end)
|> Enum.sort()
|> IO.inspect()
scores
|> Enum.at(div(Enum.count(scores), 2))
|> IO.inspect()
It works!
Amazing!
お手本
Day 10のお手本(José Valimさんの動画)はないようです
もし存在をご存知の方はお知らせいただけますとありがたいです!
Wrapping up
Advent Of Code 2021 Day 10: Syntax ScoringをElixirで楽しんでみました。
Day 25まであるので引き続き楽しんでいきたいとおもいます。
It works!
Amazing!
自分で解いてみて、なんだかイマイチだなあとおもいながら、動画をみることでJosé Valimさんに特別家庭教師をしてもらっている気に勝手になっています 。
海綿が水を吸うように、Elixirのイケている書き方を吸収しています。
伸びしろしかありません。
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!