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

Ruby 1.9が速い

YARVの笹田さんがパズルのようなプログラムだとRuby 1.9系は2倍ぐらい速くなるということを言ってたので、sudoku.rbで問題を100問作るのにかかる時間を計ってみた。Ruby 1.8.6で1分50秒(110秒)かかったところ、9月の頭にビルドしたRuby 1.9.0では、わずか3…

数独ジェネレータ完成?

数独の問題ジェネレータができた気がする。「気がする」というのは、第三者が作ったソルバーで実際に問題として成立しているか検証していないから。ともあれ、以下のコードを加えて適当にマトリックスから数字を消してみた。 def delete_one srand candidate…

アドホックでブルートフォースな富豪

数独の問題を生成するプログラムを作るために、あれこれと道具をそろえてみた。9×9のマトリックスを、81個の数字を並べた1次元配列として扱う。x,y座標を与えると、それが位置する縦の列や横に列、あるいは3×3のブロックに含まれる数字を拾って返す関数を作…

RHGをiPhoneで少しずつ読む

いきなり3日坊主的ブランクがあいてしまった。いろいろとコードを書いてみたい気持ちは山々だけど、なかなか時間が取れない。Rubyソースコード完全解説をiPhoneに入れてちょぼちょぼと読み進めている。iPhoneのAirSharingというソフトがよくできていて、WiFi…

オープンクラスってすごいことなのか

オープンクラスってすごいことなのかなと思ってググッてみた。Juixe Techknowというブログの、この解説が参考になった。やっぱりオープンクラスはふつうのことではないか、少なくともJavaとは非常に好対照となっているようだ。「Rubyではクラスを閉じること…

イテレータを作ってみる

Rubyと言えばイテレータだ(ほんとか)。これを理解したい。イテレータと呼ばれてるものはブロック渡しメソッドと呼ぶほうが、いいようだ。ブロックとは処理の塊のことを指しているだけで、そのブロックにオブジェクトを1つまたは複数渡して、何か処理をする…

ブロックなしの場合は配列を返す

あるメソッドがブロックを受け付けるかどうかはあらかじめ決まっている。受け付けるものは「ブロック付きメソッド」と呼び、それはそういうもんだと思った。で、すべてのメソッドはブロックを受け付けるか、あるいは受け付けないかのどちらかなのかな、と思…