以下のような問題と選択肢のペアがあったとします(SPI言語問題)。正解をランダムソートして問題を作るプログラムを作ってみました。
問題 正解
1 起源 1 発祥
2 揶揄 2 愚弄
3 我慢 3 忍耐
↓(ランダムソート;例)
問題 選択肢
1 起源 1 愚弄
2 揶揄 2 忍耐
3 我慢 3 発祥
正解
3
1
2
ランダムソートはこちらのサイトで教えてもらいました。Rubyは本当に便利ですね。。。ムダムダなプログラムですが、とりあえず動きます。
a = [] open(ARGV[0]).each {|line| a << line.chomp!} no = [] 0.upto(a.size-1) {|i| no << i} no = no.sort_by{rand} 0.upto(a.size-1) {|i| print a[no[i]]+"\n"} #選択肢 0.upto(a.size-1) {|i| 0.upto(a.size-1) {|ii| print (ii+1).to_s+"\n" if i == no[ii]}} #正解