LoginSignup
16
1

More than 1 year has passed since last update.

ねずみ算をElixirで解くことを楽しむ

Last updated at Posted at 2022-10-09

はじめに

ねずみ算Elixirで解いてみます。

正月にねずみ、父母いでて、子を十二ひきうむ、親ともに十四ひきに成也。此ねずみ二月には子も又子を十二匹ずつうむゆえに、親ともに九十八ひきに成。かくのごとく、月に一度ずつ、親も子も、まごもひこも月々に十二ひきずつうむとき、十二月の間になにほどに成ぞといふときに、二百七十六億八千二百五十七万四千四百二ひき。

この問題は、塵劫記(じんこうき)という、江戸時代(1627年)の算術書に書いてある代表的な問題です。

Elixir

1..12 |> Enum.reduce(2, fn _, acc -> acc + div(acc, 2) * 12 end)

27682574402(二百七十六億八千二百五十七万四千四百二)を得られます :tada::tada::tada:

数学的には2 * (7 ** 12)で求められるとのことです。

お便りご紹介

読者の @Mnishiguchi さんからお便りをいただきました。

for _ <- 1..12, reduce: 2 do
  acc -> acc + div(acc, 2) * 12
end

forの:reduceオプションを使う方法です。
ありがとうございます!

おわりに

ねずみ算Elixirで解いて、27682574402を得ることができました。

かつては、算額という文化があったそうです。

江戸時代の日本で、額や絵馬に和算の問題や解法を記して、神社や仏閣に奉納したものである。

16
1
0

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
  3. You can use dark theme
What you can do with signing up
16
1