Ruby

ピッケル本を読んだけれど、まだほとんどプログラムは作ってません。
私のRubyの実力は「数行程度のプログラムが書けるぐらい」です。
しばらくはRubyで遊んで、数百、数千行ぐらいは書けるようになります。


ファイルの中身を表示する処理です(unixのcat)。
でもこんなことをしなくても puts IO.read("cat.rb") でできます。

# ファイルの中身を表示
def cat(fname)
    File.open(fname) do |file|
        file.each_line do |line|
            puts line
        end
    end
end

クイックソートです。クイックソートの定義そのものです。
関数型言語Haskellなどでも同じぐらい簡素にかけるのですが、Rubyでも同じぐらい簡素にかけます。これも、[1,4,5,3,2,7,0,1].sort()で同じことができます。

# クイックソート
def qsort(list)
    if list.empty?   # リストが空なら、
        []           # 空のリストを返す。
    else             # そうでないなら
        s,*rest = list  # リストの先頭をsに、残りをrestに代入して、
        qsort(rest.select{|x| x<s}) + [s] + qsort(rest.select{|x| x>=s})
                        # restの中でsより小さいモノをソートし、sと
                        # sより大きいものをソートしたものをつなげる
    end
end

# てすと
puts qsort([1,4,5,3,2,7,0,1])