(11) 07/03の授業内容:達成度テスト

達成度テスト

以下の問題をできるところまで実施しなさい。

問題1:実行すると毎日の睡眠時間を聞き、入力した数字に応じて、3種類以上のメッセージを表示するようなプログラムを作成してみよう。なお、睡眠時間の区分や表示するメッセージは自由に考えてよい。面白いものを作ること。

時間とメッセージの組み合わせの例をあげる。これを参考にする必要はないので自由に考えてみよう。

  1. 15時間以上の場合:やばくないですか
  2. 10時間〜15時間の場合:ちょっと寝すぎじゃないですか
  3. 5〜10時間の場合:無難すぎて面白いコメントが思いつきません
  4. 5時間未満の場合:頑張りすぎですねL(゜ロ゜L)

問題2:1等から5等までの5つの商品を準備しておく。1等の当選確率を1%、2等は3%、3等は6%、4等は10%、5等は80%とし、ユーザーが入力した数字に基づいて商品が決定するような福引を作りなさい。なお、商品名は自由に決めてよい。if文を使って1と入力したら1等、2〜3なら2等、4〜10なら3等としても良いが、これだと何を入力すれば1等が取れるかわかってしまうため、1等が連発してしまう。仮に毎回1と入力したとしても異なる結果になるよう工夫しなさい。なお、入力を求める数字は1つでなくても構わないものとする。

ヒント:例えば以下が参考になる。

a = Time.new
print "好きな数字を入力してね:"
number = gets.chomp!.to_i
b = Time.new

c = a - b

p c

Time.newは現在時刻を取得するもので、a-bをしたcの値を表示すると2.484というような値になる。これはいわば入力までの所要時間を表す。入力の所要時間は毎回同じであるとは考えにくいので、この値を利用することが考えられる。

問題3:以下のリンク先にあるテキストファイルは酒田市の地域別の世帯数をあらわしたものである。ここから地域別に世帯数を計算で求めようとしたが、データの入力形式が悪くエクセルを使用することができない。このようなエクセルが利用できないデータではプログラミングの出番となる。正規表現を活用して、地域別の世帯数を求めなさい。

setai.txt

なお、setai.txtを開くと1行につき地域区分と住所および世帯 数が入力されている。住所と世帯数がくっついてしまっているため、このままで はエクセルは適用できない。正規表現で最後の数字を取り出してみよう。参考ま でに、最後の世帯数をとりだすために使用する正規表現はこれまでに使ったこと のないものになるはずである。学制専用サーバーのトップページにある「Rubyリ ファレンスマニュアル」で正規表現のメタ文字を調べてみよう。

市街地区	船場町1丁目150
市街地区	船場町2丁目12
市街地区	日吉町1丁目151
市街地区	日吉町2丁目232
市街地区	南新町1丁目237
市街地区	南新町2丁目80
   :               :

参考までに地域は以下の17種類がある。

  1. 市街地区
  2. 飛島地区
  3. 西荒瀬地区
  4. 新堀地区
  5. 広野地区
  6. 浜中地区
  7. 黒森地区
  8. 十坂地区
  9. 東平田地区
  10. 中平田地区
  11. 北平田地区
  12. 上田地区
  13. 本楯地区
  14. 南遊佐地区
  15. 八幡地区
  16. 松山地区
  17. 平田地区

  • 提出先:naoya@e.koeki-u.ac.jp
  • メールのSubject:学籍番号-ruby11
  • 本文の構成:1行目で学籍番号、氏名を記載する。2行目以降で実施したプログラムと実行結果を貼り付ける。説明は不要。

授業時間内に提出すること。授業以外の提出は認めない。点数は出席点2点+α(αは最大3点)とする。得点は低いが、免除者を決める上で出来具合を考慮する。

Tips:emacsでの日本語入力のオンオフはCtrl-oです

Tips:Mewによるメールの送り方はMewコマンドを参照