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

WEBrickでl33t変換プロキシを作ってみた

いいプログラマはコードをよく読むという。で、Rubyで何を読んだらいいかと聞けば、WEBrickと答える人が多いようだ。構成も美しいし、HTTPサーバなので、ネットワーク関連の処理もテキスト処理も入ってくるからということらしい。それで、あれこれ眺めたり検…

apt-get install jruby1.0

Ubuntu(ていうかDebianだろうけど)にはJRubyのパッケージがあるみたいなので、入れてみた。「aptitude instal jruby1.0」とか。それでsudoku.rbで数独パズルを生成するベンチをしてみて速いのかどうかみてみた。 $ jruby1.0 -v ruby 1.8.5 (2008-01-07 rev…

Threadを試してみた

Threadを試してみた。といってもRHGにあるサンプルをいじってみただけ。 i = 1 Thread.fork { while true puts i sleep 1 end } while line = gets i += 1 end $ ruby t.rb 1 1 1 3 7なるほど。マルチコアで処理速度が上がるわけではないようだけど、何だか…

Proc.newで冗長なコードを取りまとめ

「cp」と「mv」とメソッド名が2文字しか違わない以下の冗長なコードをまとめる方法として、Procオブジェクトを使ってみることにした。 if Options[:copy] Options[:events].each {|n| nikon.event(n).each {|photo| FileUtils.cp(photo[0],".", {:verbose =>…

タクシーキャブ数

いま使っているケータイの電話番号の局番は「3312」。この数字は「33^2+12^2=3312」という変な関係を満たしている。ということを、「What's Special About This Number?」というページで知った。このページには、ほかにも 732 = 1^7 + 2^6 + 3^5 + 4^4 + 5^3…

Proc.newが使えるのかな?

「cp」と「mv」とメソッド名が2文字しか違わない以下の冗長なコード。 if Options[:copy] Options[:events].each {|n| nikon.event(n).each {|photo| FileUtils.cp(photo[0],".", {:verbose => Options[:verbose]}) } } elsif Options[:move] Options[:event…

No, I don't want to repeat myself, either....

前に書いた写真取り込みスクリプトを案外便利に使っている。特に、さっと手元のカメラで何枚か写真を撮り、それをPCに取り込むという用途にはいい。「nikon -lcv」とかやると、ずばっと直近の写真をコピってくれる。この取り込みスクリプト、WindowsのRubyで…

なんちゃってl33t文

コメントで指摘されて気づいた。String#gsubは文字列置換のためのメソッドだけど、置換後の文字列を省略すると、イテレータとして動作してブロックを評価した結果で置換を行う、とマニュアルにある。これは便利そうだ。というわけで、練習問題として、いわゆ…

人間の文字列認識テスト

英語に限らず、人間は書き言葉を読むときに、逐字的に読んでいるわけではなく、単語や単語の塊の視覚的パターンを捉えているのではないかということを示す実験が以下。まったく難なく読めて、かなり驚いた。これを自分でも試してみようと思ってRubyでスクリ…

sudoku.rbに対称性アプローチ

また少し数独ジェネレータで実験してみた。ランダムに数字を抜き取るのではなく、対称性を考慮したほうがいいのではないか。なぜなら多くの人間が作る問題は左右、上下、あるいは反転、それらの組み合わせである回転対称などの対称性を持っていることが多い…

別解だらけ

以下にある数独ソルバーを使って生成した問題に別解がないかチェックしてみた。http://codesnippets.joyent.com/posts/show/567シンプルなアプローチで100問中7問程度、対称性アプローチで100問中10問程度の割合で別解ありの問題となってしまっていたようだ…

sudoku高速化

sudoku.rbを高速化してみた。マトリックスを埋めたあとに、1つずつ数字を消す処理(reduce+delete_one)を変えた。チェック済みかどうかを確認するのが面倒だったので、単純に1000回ランダムチェックを繰り返して「まあ大体調べたことになるだろう」という…