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

Haskell で Project Euler を解く素人遊び

2020-04-01から1ヶ月間の記事一覧

Problem 6

100までの数の”2乗の総和”と”総和の2乗”の差を求める これはなんのヒネリもない問題。ごくごく素直に2乗の総和と総和の2乗を求めるだけ。計算量を削る工夫も不要。関数sumに感謝しながらパチパチとコードを書きましょう。 foldl を使ったり、ポイントフ…

Problem 5

1から20までのすべての数で割り切れる最小の数を求める Project Euler たまにこういうプログラミング不要の問題が出る。 一応方針らしきものを述べると、pn (pは素数、nは自然数)が20以下となるべきを全て掛けあわせれば良い。数が大きい場合はプログラム…

Problem 4

3桁の数同士の積で得られる最大の回分数を求める まずはリストが回分かどうかは判定するisPalindromeを準備する。これは鉄板。一応補足しておくと、こいつの型は[a] -> Bool でリストを引数に取る。1つの数(型で言うとInt)を評価することはできない。よっ…

Problem 3

大きな数の最大素因数を求める 最初に浮かんだ方針は、 1. 素数のリストを生成 2. filter と使って「大きな数」の素因数を抽出 3. その中で最大のものを拾う シンプルに行けると嬉しかったが、実際やってみると計算量が多すぎて一向に答えが出てこない。もう…

Problem 2

4,000,000を超えない偶数のフィボナッチ数の総和 まず"four million"っていくつだっけ?というところで間違いそうなので、最初に確認。フィボナッチ数列は泥臭く書き下す方がパッと見分かりやすいが、昔どこかでzipWithを使った小洒落たのを見たことがあった…

Problem 1

1000未満の3または5の倍数を全部足したらいくつになるか? ある条件を満たす自然数の列を相手にするときは、リスト内包表記から入ってみるのが自分の中では自然な流れ。「または」だけ気をつけて、あとは深く考えずにいってみる。 うまくいきました☆