サイログ。

~雑多な記事置き場~

初心者レッスン

まず、最初に「Ruby初心者レッスン」前半。
今回は、参加者をグループ分けして、課題に対処していく方式。
自己紹介とかいろいろ。ちなみにグループ担当はブーンの人(id:babie)。

ひととおりイテレータのレクチャーをして課題を発表。
Enamerateモジュールのメソッドを実装する問題。
以下、僕の解答を記載しておきます。

  1. selectメソッド
  def select2
    r = []
    self.each{|a| r << a if yield(a) }
    return r
  end
  1. rejectメソッド
  def reject2
    r = []
    self.each{|a| r << a unless yield(a) }
    return r
  end
  1. detectメソッド
  def detect2
    self.each{|a| return a if yield(a) }
  end

続いて、それ以外のEnamerateモジュールの実装。
今回は、拙作のinjectとpartitionが発表対象になりました。ハズカシー(^^;

  def inject2(n)
    s = n
    self.each{|a| s = yield(s, a) }
    return s
  end

  def partition2
    ta = []
    fa = []
    self.each{|a| yield(a) ? ta << a : fa << a}
    return [ta, fa]
  end

各グループで課題の解答を発表。
partitionを使ったクイックソートは参考になりました。
応用が利きそうです。

ちなみに、今度からは「<<」を「クク」と呼ぶことになりました(内輪ネタ失礼)