第28回 Ruby/Rails勉強会@関西 行けなかった

http://jp.rubyist.net/?KansaiWorkshop28

夏風邪ひいてしまっていけませんでした。
ust中継してるのも忘れて、熟睡してました。


とりあえず初級者レッスンの問題だけやっといた

問題
 ・計算 100 もどきを作りましょう。
 ・仕様
  ・コンピュータが計算問題を次々に出題します
  ・回答はキーボードから入力します
  ・出題される計算問題は難易度を選択出来ます (最初に選ぶ)
    – かんたん : 一桁同士の四則演算 (割り算なし) のみ
    – むずかしい : 四則演算 (二桁の計算もあり、割り切れ
            ない除算はなし、答えに小数は出ない)
  ・合計で 100 問出題します
  ・10 問ごとに何問終了したか出力します
  ・最後に以下のものを出力します
  – 正解数、不正解数
  – 全問回答するのにかかった時間


仕様を満たしていない部分があるけど・・・。
# 0 divide 考慮してなかったりとか
また気が向いたら直す。

def main
  print '1.easy or 2.hard ? >'
  if gets.chomp! == '1' then
    calc_max = 9
    opr_kinds = 3
  else
    calc_max = 99
    opr_kinds = 4
  end
  ok_cnt = 0
  start_time = Time.now

  100.times do |i|
    question = rand(calc_max).to_s
              + operator(opr_kinds) + rand(calc_max).to_s
    print question + ' = '
    if eval(question).to_s == gets.chomp
      puts 'OK'
      ok_cnt += 1
    else
      puts 'NG'
    end
    puts "#{i} questions finished" if i%10 == 0
  end

  puts "OK : #{ok_cnt}"
  puts "NG : #{100 - ok_cnt}"
  puts "TIME : #{(Time.now - start_time)} sec"
end

def operator(opr_kinds)
  case rand(opr_kinds - 1)
  when 0 then
    '+'
  when 1 then
    '-'
  when 2 then
    '*'
  else
    '/'
  end
end

if __FILE__ == $0
  main
end