Hash 配列にしまえるもの

Hash 配列にしまえるのは変数だけではなく、 配列もしまうことができる。 ルビ緒は、各卸売先の 1 年間の黒ごまの出荷量を調べることにした。 四半期のデータは次のようになった。 sesame.dat

さけでん商店        6  2  3  4
づるおが米商店     10  3  4  5
みがざスーパー     20  4  4  5
まづやま酒店        2  1  3  1

このデータを使ってプログラム sesame.rb で出荷量を調べる。 Hash 配列名を sesame とし、データを変数 monthly で取得して、 それが求める分解になっているかどうか調べ、 そうであるならば、 Hash 配列に分解したデータを配列としてしまうプログラムである。

#!/usr/koeki/bin/ruby

sesame = Hash.new                  
                  # 商店名と黒ごまのデータが入る Hash配列

$KCODE = 'e'

while quarter = gets
  if /(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/ =~ quarter
    sesame[$1] = [$2.to_i,$3.to_i,$4.to_i,$5.to_i]
  end
end

実行してみると、何も実行されていないかのようなプログラムになる。

p 文を実行し、この配列に入っている文字の種類は何か、調べよ。 とくに四則演算が可能であるか調べ、 そうでない場合はどこを変更すべきか述べよ。

整数値が使われているので、文字列を整数値に変換する to_i method を使用して、p 文を実行した結果、例えば

% ./sesame.rb sesame.dat              
{"みがざスーパー"=>[20, 4, 4, 5], 
 "さけでん商店"=>[6, 2, 3, 4], 
 "まづやま酒店"=>[2, 1, 3, 1], 
 "づるおが米商店"=>[10, 3, 4]}

と表示されれば、四則演算が可能になる。データを計算し、 総量を求めるには、この Hash 配列の中の配列を計算すればよい。 つづく

本日の講義 / 基礎プログラミング II / 2007 年度

Madoka Nishimura <madoka@e.koeki-u.ac.jp>