2008-06-01から1ヶ月間の記事一覧

eruby 再インストール

原因はよく分からないのですが、なんか突然 mod_rubyで動かしていたページが Internal Server Error を出すようになり、ログを見ると [Sat Jun 28 14:32:04 2008] [error] mod_ruby: error in ruby [Sat Jun 28 14:32:04 2008] [error] mod_ruby: (eval):45:…

無限リストを途中で打ち切りたい

たとえばある関数 f が単調増加することが分かっている場合、 sum [ a | x <- [1..], let a = f x, a < m ] みたいに書いて、m 未満の f(x) の和を計算したいのです。もちろんこのコードは止まりません。処理系は関数が単調増加だなんて知る由もないのですか…

Gauche のソート

現在の実装では、cmpfnが省略された場合はクィックソートとヒープソートを使い、 cmpfnが与えられた場合はマージソートを使っています。 Gauche Users’ Reference: Top へー。何かこの挙動の根拠はあるのかしら? クイックソートとヒープソートをってのはイ…

素数株式会社

Amazon で「素数」を検索したら、なんかいっぱい引っかかったんですが。http://sosu.jp/何を思ってこの社名にしたんだろうか…。http://www.unix.co.jp/ を思い出した。

残り30問!

分からなさすぎて発狂しそうになるw 数や図形がゲシュタルト崩壊しだしたら休憩しませう。 144 レーザー。誤差との戦い。 実装がまずいのか、最初に与える方向ベクトルを正規化(長さ1)しただけで止まらなくなるし。 146 素数テスト…なんだけどあまりにもチ…

div/mod と quot/rem

Haskell は負数の割り算をきちんとサポートしていて、剰余の符号が、割る数と割られる数のどっちに依存するかで2種類ある。 quotRem x y = (q,r) ならば x = qy + r divMod x y = (d,m) ならば x = dy + m 違いは、r の符号は x と同じ (restoring method) m…

加速互除法

数論入門―証明を理解しながら学べる (ブルーバックス) を見て、加速互除法というユークリッドの互助法の高速化ネタを知りました。 剰余を絶対値が最小になる取り方で与えると、パラメータの減りが速くなるとのこと。 なるほどーと思って実装してみたのですが…

ひさびさのEuler充

週末に20問くらい解いた。フォーラム見てたら、数列の階差を取ってみると1個とばしのフィボナッチ数列で一個おきに2倍になってるよ (F[3], 2F[5], F[7], 2F[9], ...) とか普通に気づく人がいたりして笑った。変態すぎるぜ。今まで問題の手のつけ方が汚くてプ…

matrixと整数

整数要素の行列で何も考えず Matrix#inv してたら、中で整数の割り算が使われてバグってた。require 'mathn' しておくと吉。

リハビリ

SRM や Project Euler をぼちぼち再開。頭鈍ってるのを痛感する。