のてすきあ − 完全独習非プログラマー −

Haskell で Project Euler を解く素人遊び

2020-04-18から1日間の記事一覧

Problem 26

1000以下の自然数の逆数で、循環少数の周期が一番長い数を求める。 はじめは与えられたdに対して、循環少数の表記を返す関数を考えたが、なんとなくしっくりこないものしか作れなかった。1/14のように、途中から周期的になる数の扱いが煩雑になりそうなので…

Problem 25

1,1,2…で始まるフィボナッチ数列でFnが始めて1000桁を超えるn。 桁数を数えるのにData.Char.digitToIntを使用。これはProject Euler あるあるかも知れない。あとは普通。 フィボナッチ☆

Problem 24

0123456789の順列を昇順に並べたときに、1000番目に来る並びを求める。 順列をどのように実装するかというのが出題者の意図なのかもしれないなー…と思いつつも、面倒なので、ありがたくData.List.permutationsを使わせていただく。 先人に感謝☆

Problem 23

約数の和が自分自身より大きな数をabundant numberと呼ぶ。28123より大きな数は全て2つのabundant numberの和として表せるが、28123以下の数では必ずしもそうではない。2つのabundant numberの和で表せない全ての数の和を求める。 abundant number はリスト…

Problem 22

名前に対して所定の計算方法で点数をつける。与えられたリストにある名前の点数の合計を求める。 これはストレートに処理するだけ。当然名前をリスト形式 [String] にしないと処理がややこしいが、与えられたテキストファイルの名前を普通に読み込んでも [St…