LoginSignup
0

posted at

updated at

Organization

Advent Of Code 2021 (Day 7: The Treachery of Whales)をElixirで楽しむ

あらざらむこの世のほかの思ひ出に今ひとたぴのあふこともがな

Advent Calendar 2022 108日目1の記事です。
I'm looking forward to 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
私のAdvent Calendar 2022 一覧


はじめに

この記事は、Advent Of Code 2021 Day 7: The Treachery of WhalesElixirで楽しんでみます。

スクリーンショット 2022-04-24 23.12.46.png

私はGitHubでログインしました。

私の回答

私の回答です。
解けるには解けましたが、効率が悪いし、メモリをたくさん使っているようにおもいます。

私の回答
input = "3,4,3,1,2"

Part 1

list = input |> String.split(",", trim: true) |> Enum.map(&String.to_integer/1)

count = Enum.count(list)
max = Enum.max(list)

0..max |> Enum.reduce(count * max, fn pos, min_fuel ->
  {largers, smallers} = Enum.split_with(list, & &1 >= pos)
  fuel = Enum.sum(largers) - pos * Enum.count(largers) + pos * Enum.count(smallers) - Enum.sum(smallers)
  if fuel < min_fuel, do: fuel, else: min_fuel
end)

Part 2

0..max |> Enum.reduce(Enum.sum(1..max) * count, fn pos, min_fuel ->
  fuel = Enum.reduce(list, 0, fn i, acc -> Enum.sum(0..abs(i - pos)) + acc end)
  if fuel < min_fuel, do: fuel, else: min_fuel
end)

It works!
Amazing!

お手本

Day 7のお手本(José Valimさんの動画)はありませんでした :sob:

Day 8はまた再びありました。


Wrapping up :lgtm::lgtm::lgtm::lgtm::lgtm:

Advent Of Code 2021 Day 7: The Treachery of WhalesElixirで楽しんでみました。
Day 25まであるので引き続き楽しんでいきたいとおもいます。

It works!
Amazing!

自分で解いてみて、なんだかイマイチだなあとおもいながら、動画をみることでJosé Valimさんに特別家庭教師をしてもらっている気に勝手になっています :sweat_smile:
海綿が水を吸うように、Elixirのイケている書き方を吸収しています。
伸びしろしかありません。

Enjoy Elixir:bangbang::bangbang::bangbang:
$\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!


  1. @kaizen_nagoya さんの「「@e99h2121 アドベントカレンダーではありますまいか Advent Calendar 2020」の改訂版ではありますまいか Advent Calendar 2022 1日目 Most Breakthrough Generator」から着想を得て、模倣いたしました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0