2006-05-01から1ヶ月間の記事一覧

injectを使ったパスカルの三角形

id:epicsさんの続・パスカルの三角形を読んで「injectかっこいい」と思い、まねっこします。ただまねっこだとつまらないので、nil.coerceして、変数名もちょっと工夫。 def nil.coerce(number) [number, 0] end (1..9).inject([[1]]) {|choose, n| choose <<…

Rubyで作る無限音階

Rubyで無限音階(Shepard Tone)

selectでフィルタ

filter関数を読んでいるうちに「Rubyでは何だっけ?」と思ってごそごそ調べました。 p "HelloWorld".split(//).select {|c| /^[A-Z]$/ =~ c } #=> ["H", "W"] HaskellではStringは[Char]だけれど、Rubyは違うんだっけ。 HaskellではChar.isUpperだけれど、Ru…

マルチリンガルなシソーラス検索

たとえば、 HaskellのChar.isUpper関数に相当するRubyのメソッドは何だろう Schemeのstring->list関数に対応するRubyのメソッドは何だろう Rubyのsplitメソッドに対応するHaskellの関数は何だろう Rubyの?Aに対応するSchemeの書き方は何だろう といった疑問…

Officeのイルカを動かすRubyスクリプト

カイルっていう名前のイルカを動かすRubyスクリプトだそうです。楽しい。 イルカと遊ぼう ちなみに、DOLPHINをSAEKOにすると冴子先生が空を飛びます。

二次元配列を縦に足す

二次元配列を列方向に処理を読んで作ったプログラム。 ar = Array.new DATA.each { |line| line.chomp!.split(/,/).each_with_index { |item, i| ar[i] or ar[i] = Array.new ar[i] << item.to_i } } p ar #=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]] p ar.map {…

Rubyist Hotlinks

角谷さんの好きなメソッド嫌いなメソッドを読んで。 Object#extend Module#includeはクラスへのMixinで、Object#extendはインスタンスへのMixin。 module Rubycolify def rubyco p self.to_s end end s = "Hello" s.extend(Rubycolify) s.rubyco #=> "Hello"…

メソッド名自動生成

Danさんからお題が出ていたのでRubyで書いてみました。(Danさんのこのエントリ、なぜかトラックバックもコメントもできない…)←直っていました。 class AsciiChar def method_missing(method, *args) p "#{method}" if $DEBUG method.to_s.sub(/^_/, "").hex.…