Ruby技術者認定試験シルバーの勉強用アプリを試作してみた
次のような内部DSLを書いて、メインプログラムを走らせると、ランダムに問題が出題されるアプリを作ってみました。
# -*- encoding: utf-8 -* problem "範囲演算子の問題" do size = 5 str = Rcert::random_string(size) f = rand(size-1) l = f + 1 + rand(size-(f + 1)) description <<-DESC 以下のコードを実行したとき表示されるものを1つ選択してください DESC src <<-SRC puts "#{str}"[<%= @range %>] SRC opts = ["#{f}..#{l}", "#{f}...#{l}"].sort_by {rand} answer :range => opts[0] option :range => opts[1] end problem "first/shift" do array = ["Ruby", "Perl", "Python", "PHP"].sort_by {rand} description <<-DESC 以下のコードを実行したとき表示されるものを1つ選択してください DESC src <<-SRC x = #{array} puts x.<%= @method_name %> puts x[0] SRC ms = ["first", "shift"].sort_by {rand} answer :method_name => ms[0] option :method_name => ms[1] end problem :problem_3 do array = (1..4).sort_by {rand} description <<-DESC 以下のコードを実行したとき表示されるものを1つ選択してください DESC src <<-SRC a = #{array.inspect} b = a c = b.<%= @method_name %> puts a.inject {|x, i| x * i} + c SRC ms = ["first", "shift"].sort_by {rand} answer :method_name => ms[0] option :method_name => ms[1] end
こんなの作ってないで、資格試験の勉強しろって話ですが、デモ動画も撮ってみました。