memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

ランダムソート

以下のような問題と選択肢のペアがあったとします(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]}} #正解