Rubyを使って、ファイル(txt)を読み込んで、採点できるような簡易機能を実装してみました。
前提
- ファイル構成
- scoring.rb
- test.txt(問題の回答を改行して記載したとする)
- 考慮していない点(簡易版なので。。)
- ファイルの存在チェック
- 回答が不十分の場合(回答が3つ未満、4つ以上の場合)
- 全問正解しか判断できない、不正解があった時に何個不正解なのか、何個正解なのか分からない
- エラーハンドリング
- etc..
ファイル
scoring.rb
answer_arrays = ['1', '2', '3'] # 答えを配列で管理する
index = 0
is_incorrect_answer = false # 不正解があった場合 true にする
filename = ARGV[0] # コマンドラインからデータを入力する ex. ruby scoring.rb test.txt
file = File.open(filename) # ファイルを読み込む
file.each_line do |line| # ファイルの中身を1行ずつ読み込む
unless line.chomp.eql?(answer_arrays[index]) # 答えと比較し間違っていたら true にする
is_incorrect_answer = true
break # 一個でも不正解あれば繰り返し処理終了
end
index += 1 # 次の answer_arrays を取得する為に+1する
end
file.close # ファイルを閉じる
if is_incorrect_answer
print '不正解があります'
else
print '全問正解です'
end
test.txt
1
2
3
実行
Console
ruby scoring.rb test.txt
# => 全問正解です
所感
- rubyには、加算子(++)が無いので、「+= 1」は何か嫌だな。。
-
line.chomp.eql?
に関して、chomp
が無いline
には改行コードが含まれてしまう為、chomp
を使って改行コードを取り除いた文字列で判断している。