Project Euler

Project Euler (Problem ID 35..40)

ID35から40は、割とあっさり解けた。 実行時間が長いのはID35、ID37、ID39で、それぞれ約4秒、2秒、5秒。 Project Eulerの問題は全て30秒以内に解けるようにできているとのこと。 一応30秒以内には解けているけれども、ID35..40の出題時期は2003年なので、そ…

Project Euler (Problem ID 33..34)

ID33は、消去される数をcとして、特に問題無く完了。 ID34では、rangeOfDigitにより解の探索範囲を桁で絞っただけでは、計算時間が30秒を超えてしまった(正解は得られた)。 そこで、さらに枝刈りを追加(condOfNums)し、何とか計算時間を2秒に。 しかし、汚い…

Project Euler (Problem ID 31..32)

ID31は、問題文をそのままコードに。 ID32では、ID24で上手く書けなかったpermutationを書き直した。multiplicandとmultiplier、productの桁数の組み合わせをsepsにて絞り込んだつもりだったが、実行時間を計測すると約1.5秒。もう少し速くなりそうな気がす…

Project Euler (Problem ID 28..30)

ID28は、とっても場当たり的な式になってしまった。 ID29では、多倍長整数に感謝。 ID30は、maxNを計算してしまえば、あとは総当たりで簡単に解けた。というか問題文の冒頭に「驚くべきことに3個しか存在しない」とか書いてあるので、上界を調べざるを得ない…

Project Euler (Problem ID 26..27)

ID26と27。 ID26では、循環節の長さがd未満であることから、choppedRemsできる点に(私にしては)割と早く気がついた。その後はすぐにコーディング完了。計算の高速化のための工夫なども特に必要なかった。 ID27では、問題をそのままコードに落としたところ、…

Project Euler (Problem ID 21..25)

ID21から25まで。 ID22は文字列解析が難しかった。 ID23では、初めて配列を使ってみた。 配列を使った理由は、abundant numberの和として表せるかの判定を高速化するため。 実行時間を計測したところ、abdsの計算に25秒、sumOfAbdsの計算に3秒を費やし、合計…

Project Euler (Problem ID 16..20)

ID16から20まで。 ID17でfourteenの綴りを間違えてforteenにしてしまい、悩んだ。 ID18の問題文のNOTEに、「この問題はbrute forceでも解けるけど、ID67は賢くやらないと解けないよ」と書いてあったので、今回はとりあえずbrute forceで解いてみた。 ID19で…

Project Euler (Problem ID 11..15)

ID 11から15まで。関数primes、factorとprimeFactorsは、ID 3の使い回し。 ID 11のコードをうまく書けず、汚くなってしまった… ID 12では、素因数分解してから、また積をとっているのが良くない気がする。 素因数分解したときの指数だけ見れば良いのかな? ID…

Project Euler (Problem ID 6..10)

ID 8が難しかった… ID 9は、ストレートに書くとスピードが足りなかったので、コードをいじっているうちに、なんだかごちゃごちゃした感じに。 問題固有のサブ関数は、whereで束ねた方が良いのかなぁ? ID 6..10 import List prog006 = sqrOfSum - sumOfSqr wh…

Project Eulerを始めてみた

Project Eulerを始めてみました。 Haskellの練習を兼ねています。 (むしろ、そちらが主目的かも) とりあえず、Problems ID 1..5をクリア。 どこまでいけるやら。 ID 1 import List uniq (x:[]) = [x] uniq (x:xs) | x == head xs = uniq xs | otherwise = (x…