8000 GitHub - ushibutatory/mayoiroad: [C#]マヨイドーロ問題に挑戦したよ
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

ushibutatory/mayoiroad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 

Repository files navigation

マヨイロード問題に挑戦してみた

結城浩先生が出題されたマヨイロード問題に挑戦しました。

問題を知ったのが締め切り後だったため、回答を提出するには至りませんでした。

.NETのバージョンアップや細かい記法の見直しなどを2020年に行いました。

実行結果

  • 実装言語など
    • C#
    • .NET Core 3.1

※計算時間などを確認するため、出力形式を要件から少し変更しています。

サンプル

処理が合っているかどうかを確認するために、まとめて処理する list コマンドを作成しました。

# dotnet MayoiRoad.App.dll list 1 15
※一度計算したフィボナッチ数はキャッシュするため、計算時間は正確ではありません。
Time:00:00:00.005348, N:1, P:2
Time:00:00:00.000003, N:2, P:2
Time:00:00:00.000417, N:3, P:7
Time:00:00:00.000002, N:4, P:7
Time:00:00:00.000003, N:5, P:20
Time:00:00:00.000003, N:6, P:20
Time:00:00:00.000003, N:7, P:54
Time:00:00:00.000003, N:8, P:54
Time:00:00:00.000063, N:9, P:143
Time:00:00:00.000004, N:10, P:143
Time:00:00:00.000004, N:11, P:376
Time:00:00:00.000032, N:12, P:376
Time:00:00:00.000007, N:13, P:986
Time:00:00:00.000010, N:14, P:986
Time:00:00:00.000006, N:15, P:2583

今思うと、XUnitでケース作成すればこの機能は不要でした。

本題(N=2015)

# dotnet MayoiRoad.App.dll calc 2015
Time:00:00:00.006264, N:2015, P:24410294683171395267259945469996127000411199333760853190535535281681195871429510314079442068798555059453792431772087225245168879580469159794544170936403149540819320510882801573596907938222922817134288725100817648047405608500267748766714030468003650259685406411646787207097050545802045736020993909154298598218721111963426993884619351338577630868510716463423585020972878819198991971234596733617320373133963970742975210614208

所感など

問題文から、まずは法則を探しました。あれこれ考えて、フィボナッチ数列は比較的早く見つけることができました。

実装上では、同じフィボナッチ数の計算が何度も出現することに気づいたため、キャッシュして処理時間が短くなるようにしました。

何とか本題(N=2015)でも1秒を切ることができました。

2020 - @ushibutatory

About

[C#]マヨイドーロ問題に挑戦したよ

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  

Languages

0