課題8

1番をs4「#08 提出課題」掲示板に提出せよ。2番以降を解いた場合は emailで提出すること。

2番以降の宛先: ruby-1-08@e.koeki-u.ac.jp

問題

  1. (必須:s4提出)課題7a で作成した mydata.csv を用意し、そこに含まれる特 定のフィールドから特定のパターンにマッチするレコードのみを出力 するプログラム mydata-search.rb を作成せよ。

    おおむね正規表現の練習問題 の1番の saito-katakana.rb のような形になるはずである。

    実行例を以下に示す。以下の例は meibo.csv の「居住地」フィールドの値で検索できるように作成したものである。

    ./meibo-addr.rb meibo.csv
    居住地で探します。検索パターン: 酒田
    ナカマチ タロウ,NAKAMACHI Taro,中町太郎,酒田
    ./meibo-addr.rb meibo.csv
    居住地で探します。検索パターン: [ぁ-ん]
    サイトウ テツヤ,SAITOH Tetsuya,斎藤徹夜,白夜の国
    
  2. (選択:email提出) 自作した mydata.csv に数値項目がない場合は追加せよ。 その上で、数値による絞り込み検索ができるプログラム mydata-N.rb を以下の仕様により作成せよ。

    1. ./mydata-N.rb mydata.csv 下限値 上限値

      と2つの数値を第2第3引数(つまり ARGV[0], ARGV[2])に指定すると その数値項目の値が指定した範囲内にある場合のみ そのレコードを出力する

    2. ./mydata-N.rb mydata.csv 下限値

      のように 上限値 指定を省略した場合は、その数値項目が 下限値 以上のものすべてを出力する。

    たとえば解説で用いたmeibo.csv に「身長」フィールドを追加して meibo2.csv を作成したとする。このCSVファイルに対して実行してみた例を 以下に示す。

    ./mydata-N.rb meibo2.csv 170 180
    さとう胸幸さんの身長は173.0cmです.
    中町太郎さんの身長は170.0cmです.
    浪花之太朗さんの身長は172.1cmです.
    ./mydata-N.rb meibo2.csv 170
    さとう胸幸さんの身長は173.0cmです.
    中町太郎さんの身長は170.0cmです.
    浪花之太朗さんの身長は172.1cmです.
    悲見四太郎さんの身長は190.1cmです.

    課題7b が参考となる。 作りかけの不完全なもの

  3. (選択:email提出) 自作した mydata.csv の任意の項目で検索できるような プログラム field-search.rb を作成せよ。

    meibo.csv に対して実行すると以下のようになることを想定している。

    ./field-search.rb meibo.csv
      0: ナマエ
      1: Name
      2: 氏名
      3: 居住地
    何番のフィールドで検索しますか(番号で入力): 0
    「ナマエ」フィールドで検索します。
    検索バターンは: (.)\1
    イイモリ ハナコ,IIMORI Hanako,飯森花子,飯森山
    ゲゲノ キタロウ,GEGENO Kitarou,下々野喜太郎,魔界村
    ./field-search.rb meibo.csv
      0: ナマエ
      1: Name
      2: 氏名
      3: 居住地
    何番のフィールドで検索しますか(番号で入力): 3
    「居住地」フィールドで検索します。
    検索バターンは: 酒田
    ナカマチ タロウ,NAKAMACHI Taro,中町太郎,酒田
    

レポート提出方法(2番以降)

Subjectを

#08 正規表現 (解いた問題番号)

とし、本文の先頭に

氏名: 公益太郎
学籍番号: c123xxx
クラス: XX

を入れて、上記宛先に送ること。その後のレポート本体は

  1. 学籍番号 氏名
  2. 作成したプログラムの中身の説明
  3. プログラムを動かして正規表現検索した結果の説明
  4. 参考文献
  5. 実行結果
  6. 共同作成者・所要時間
  7. 感想
  8. 作成したファイルの添付

の順で書くこと。参考文献は具体的な場所が特定できるよう 厳密かつ正確に記すこと。


本日の目次