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

Project Euler 425

http://projecteuler.net/index.php?section=problems&id=42577着。 簡単な問題なのに、見落としがあって2時間以上かかってしまった。F(10^4)が合っていてもF(10^7)が合わなかった。

Project Euler 424

http://projecteuler.net/index.php?section=problems&id=42426着。 数独の時と同じようにしらみつぶしに調べればいいだろうと思っていたが、予想以上に時間がかかる。何問かどうしても答えを出すのに時間がかかる問題が出てきた。それは、手で途中まで解い…

PyPyを速くする(3) ジェネレータ

例えば素因数分解を与えて約数を全て列挙するコードを書きます。こんな感じでしょうか。 def pows(n, e): yield 1 q = 1 for _ in xrange(e): q *= n yield q def divisors(fs): if not fs: yield 1 else: p, e = fs[0] qs = pows(p, e) for n in divisors(f…

Project Eulerの難易度

Project Eulerの問題の難易度としては解いた人の数が使われますが、これよりも最初のほうの人が解くまでにかかった時間のほうが実態に合っていると思います。ここでは、Problem304〜422の50人解けるまで時間を調べてみました。特に上のほうは100番台レベルで…

Project Euler 423

http://projecteuler.net/index.php?section=problems&id=42363着。 きのう簡単なところがどうしてもうまく書けなくて。 そこが書けたら、あとはふつうに高速化するだけだった。 たぶん一番時間がかかっているあそこを工夫すれば速くなると思うんだけどな。

PyPyを速くする(2) 関数型 vs. 手続き型

Problem 1を考えます。ふつうに書くとこんな感じです。 N = 10 ** 8 # オリジナルは1000 print sum(n for n in xrange(1, N) if n % 3 == 0 or n % 5 == 0) この問題はプログラマを関数型に導くためのものなのです。 これを動かすと、Pythonで13秒、PyPyで3.…

Project Euler 422

http://projecteuler.net/index.php?section=problems&id=42238着。かかった時間は測定不能レベル。 地道に計算すればそんなに難しくない。

Project Eulerランクイン数ランキング

Problem 277から421までのランクイン数のランキング 4/6 16:00頃現在 ID別 rank ID country frequency 1 x22 Slovakia 144 2 aleksey Ukraine 131 3 uwi Japan 126 4 triceps Japan 109 5 umu Germany 107 6 Tepsi Hungary 102 7 Anton_Lunyov Ukraine 100 8…

Project Euler 421(2)

http://projecteuler.net/index.php?section=problems&id=421いろいろがんばって87秒になった。これ以上は無理そう。

Project Euler 421

http://projecteuler.net/index.php?section=problems&id=42159着。PyPyで110秒。 昨日解法わかったが、体調悪くてコードを組む気力がなかった。比較的簡単なのに。 もうちょっと速くなると思うけど、うまくいかない。