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

Arrayにpick_oneメソッドを追加

数独の問題を生成するプログラムを習作として書いてみようとして、てこずっている。素朴なアプローチですら、それをサラサラと書き下せるほど基本的なArrayクラスの扱いも分かっていないからだと思う。「えっと、多重配列ってどうやって初期化するんだっけ。…

succさえあればオッケー

どんなオブジェクトでも、とsuccが定義されていれば、範囲オブジェクトが作れる。ということの例として、range.cには、 class Xs # represent a string of 'x's include Comparable attr :length def initialize(n) @length = n end def succ Xs.new(@length…

RHGがある

またしても範囲オブジェクトの話。知り合いに教えてもらった驚愕の仕様。 irb(main):005:0> (1..2).include?(1.5) => trueinclude?もしくはmember?は、与えられた引数がRangeオブジェクトのメンバであればtrueを返すメソッド。(1..2)は配列に変換すると、[1,…

ハッシュのキーにシンボル、は速い?

RHGを少し読んでみた。第1部の第2章を半分ぐらい。分からないことだらけだけど、どうも鼻血が出そうにおもしろそうだということが分かった。文章も謎解き風で、非常におもしろいし、まじめなのか不真面目なのか分からないようなノリが楽しい。 ところでQnil…

範囲オブジェクトじゃなくてString#succ

文字列についても範囲オブジェクトは生成可能で、("ab".."bc")などとした場合、それが繰り上がりのある精妙なルールに基づいて行われているらしいことに昨日気がついた。それで少し調べてみた。これは範囲オブジェクトの話とは直接関係がなく、String#succが…

Mix-inのココロ

Mix-inの話題がMakoto Hiroiさんのプログラミング言語解説にあった(http://www.geocities.jp/m_hiroi/memo.html)。このHiroiさんの解説は、ずいぶん前にxyzzyのLispだとか、Prologの説明だとかで、繰り返し読んだことがある。Prologとかってどんな言語か全…

ダイクストラ先生の議論とRubyの範囲オブジェクト

延々と範囲オブジェクトのことばかり調べているぼくは異常なRuby入門者だろうか……、という心配を感じつつも、まだ範囲オブジェクトのことを。Rubyの範囲オブジェクトは始点と終点を含む。(1..5)は1≤i≤5であって、1≤i irb(main):091:0> (1...5).to_a => [1, 2…

Enumerableモジュール

どうしてArrayには条件にマッチしないものを返すrejectとかdelete_ifがあるのに、その逆はないんだろうかと不思議に思っていたけど、それはマニュアルの見方が分かってなかっただけのようだ。というか、クラスやモジュールの相関関係を理解してなかったとい…

範囲オブジェクト再び

範囲オブジェクトが不思議だなと思って調べて見た。(1..5)だけじゃなく、("1".."5")も、ちゃんと文字列として受け付けて範囲オブジェクトが生成される。 irb(main):035:0> ("1".."5").to_a => ["1", "2", "3", "4", "5"]文字列は数字じゃなくてもいい。 irb(…

Rubyのマニュアルをローカルにインストール

Rubyのユーザーマニュアルはオンラインで公開されているけど、さすがにブラウザじゃ面倒くさい場面も多い。それでWindowsのヘルプ形式になっているファイルがあると知り、しばらくこれを使っていた。検索もできるし、表示も綺麗だし、悪くないと思う。しかし…

範囲オブジェクトを配列に

範囲オブジェクトと配列って似てるなぁと思いつつ、どうやって範囲オブジェクトを配列にしたらいいのか分からなかった。単にObject.to_aとやるか、Array(foo)とかやればいいだけらしかった。 irb(main):001:0> a = (1..5) => 1..5 irb(main):002:0> a.to_a =…

写真取り込みスクリプト

デジカメから写真を取り込むスクリプトを書いてみた。アルバム系ソフトと違って「さっき撮った写真」とか「昨日の午後に撮ったあれらの写真」とか、そういう感じで指定して取り込める。デフォルトでは1時間以内に撮影された一連の写真群を1つのイベントとみ…

ふと思い立って

ふと思い立ってRubyの勉強ブログをつけることにした。Rubyもプログラミングも初心者だけど、まあ趣味なので、ゆっくり楽しくやっていければ。最近は、いつもカバンに『たのしいRuby』の第2版を持って歩いている。