2002-07-08 [長年日記]
λ. 何とかプロジェクト
偶然ミーティングをやっていた近くを通りかかったので、話を聞いてきた。
λ. 換え字暗号
某氏が、換え字暗号を解読するためのプログラムを書いて実行させていた。暗号化されたデータに適当な換え字を適用して、キーワードがその中に含まれるかどうかで、正しい解読結果の候補を探すという仕組み。しかし、1時間以上たっても終わらないようだ。
単なる換え字暗号なんだから、データ自体を変換するのではなく、キーワードの方を逆変換して検索した方が絶対速いに決まってる。
λ. 『しゃぼてん』 野中 英次
λ. class From
こんなコードを随分頻繁に書いているような気がする。自然数を0から順番に列挙したくなる事とかって頻繁にあるよね?
class From include Enumerable def initialize(from = 0) @from = from end def each i = @from loop { yield i i = i.succ } end end
それとも、無限大を表わすオブジェクトを作って 0..Infinity とか書けた方が良いのかな? coerceを使って比較演算子を定義するのが面倒そう。
Inf=1.0/0; (1..Inf).each {} でどうでしょう。<br>upto/stepでもいいですけど。
そうか、Floatには既に無限大を表わす値があったのですね。<br>すっかり見落としていました。
ruby -e 'a = 2**2**14; b = a+1; i = 1.0/0; p([a==i, i==b, a==b])'
げ、BignumからFloatに変換されるときに<br>Infinityになってしまう場合があるのか。<br>これは落とし穴ですねぇ。