http://www.sw.it.aoyama.ac.jp/2010/PB2/lecture12.html
© 2007-10 Martin J. Dürst 青山学院大学
inject
、group_by
提出: 12月17日 (金曜日) 22:00 までに Moodle に
famous_hash.rb
のファイル名で投稿
以前作った famous_method.rb
(正解例でも可能)
で連想配列によって出力する文字列 (height, weight, normal, obese
など)
を日本語に置き換えるようなプログラムを作成しなさい。
ヒント:
class Person
の前に連想配列を
Translation
という名前の定数で用意#{Translation[...]}
で output_line
メソッド内で使用発展問題: 複数の言語が使えるようにする (ハッシュのハッシュ)
正解例: 都合により削除
提出: 12月17日 (金曜日) 22:00 までに Moodle に
words.rb
のファイル名で投稿
英語などの文書の入力 (<
ファイルまたは直接入力)
を行と単語に分解し、それぞれの単語の数を数えて、アルファベット順にきれいに出力しなさい。
入力例: Ottos Mops, President Obama's speaches
ヒント: 文字列の delete
メソッドで
,.!?;:'"
など記号を取り除く
発展問題: 単語の頻度順で出力
正解例: 都合により削除
def bmi(h,w) 20 end
)require
'test/unit'
)inject
sum = [1, 2, 3, 4].inject(0) do |memo, n| memo + n end
product = (1..10).inject(1) do |memo, n| memo * n end
inject
の引数は出発点
(必要ないときもある)memo
は今までつなぎ合わせた結果group_by
(1..10).group_by do |n| n % 2 end { 0 => [2, 4, 6, 8, 10], 1 => [1, 3, 5, 7, 9] }
famous_people.group_by do |person| person.danger end
仮引数のときの書き方: def my_method (x, y,
&block)
実引数の使い方, その一: block.call
(ブロックを関数のように呼び出す)
実引数の使い方, その二: sort_by &block
(ブロックを別のイテレータに渡す)
提出: 12月24日 (金曜日) 22:00 までに Moodle に
famous_stats.rb
のファイル名で投稿
有名人のデータから次の統計を計算し、出力しなさい。
注意: 肥満度ごとにプログラムをコピペするのではなく、繰り返し (イテレータ) を使う
発展問題: 平均を計算できる関数を作って使う
提出: 12月31 日 (金曜日) 22:00 までに Moodle に投稿
これから自分が書きたいプログラムの概要・応用を文書 (.txt ファイル) で説明しなさい。
条件:
授業全体の内容を復習し、分からない部分をリストアップ