第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