Show More
Commit Description:
[grader] added check_wrapper...
Commit Description:
[grader] added check_wrapper
git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@111 6386c4cd-e34a-4fa8-8920-d93eb39b512e
References:
File last commit:
Show/Diff file:
Action:
std-script/grade
| 80 lines
| 1.9 KiB
| text/plain
| TextLexer
|
|
r0 | #!/usr/bin/ruby | ||
|
r22 | def log(str='') | ||
if ENV['TALKATIVE']!=nil | ||||
puts str | ||||
end | ||||
if ENV['GRADER_LOGGING']!=nil | ||||
log_fname = ENV['GRADER_LOGGING'] | ||||
fp = File.open(log_fname,"a") | ||||
fp.puts("grade: #{Time.new.strftime("%H:%M")} #{str}") | ||||
fp.close | ||||
end | ||||
end | ||||
|
r0 | def char_comment(comment) | ||
if comment =~ /[iI]ncorrect/ | ||||
'-' | ||||
elsif comment =~ /[Cc]orrect/ | ||||
'P' | ||||
elsif comment =~ /[Tt]ime/ | ||||
'T' | ||||
else | ||||
|
r23 | 'x' # these are run time errors | ||
|
r0 | end | ||
end | ||||
problem_home = ENV['PROBLEM_HOME'] | ||||
require "#{problem_home}/script/test_dsl.rb" | ||||
load "#{problem_home}/test_cases/all_tests.cfg" | ||||
problem = Problem.get_instance | ||||
if problem.well_formed? == false | ||||
|
r22 | log "The problem specification is not well formed." | ||
|
r0 | exit(127) | ||
end | ||||
all_score = 0 | ||||
all_comment = '' | ||||
(1..(problem.runs.length-1)).each do |k| | ||||
|
r22 | log "grade run #{k}" | ||
|
r0 | run = problem.runs[k] | ||
run_score = 0 | ||||
run_comment = '' | ||||
|
r8 | run_comment_short = '' | ||
|
r0 | run.tests.each do |test_num| | ||
result_file_name = "#{test_num}/result" | ||||
if not File.exists?(result_file_name) | ||||
|
r22 | log "Cannot find the file #{test_num}/result!" | ||
|
r0 | exit(127) | ||
end | ||||
result_file = File.new(result_file_name, "r") | ||||
result_file_lines = result_file.readlines | ||||
run_score = run_score + result_file_lines[1].to_i | ||||
|
r8 | run_comment += result_file_lines[0] | ||
run_comment_short += char_comment(result_file_lines[0]) | ||||
|
r0 | result_file.close | ||
end | ||||
run_result_file = File.new("result-#{k}", "w") | ||||
run_result_file.write run_score | ||||
run_result_file.write "\n" | ||||
run_result_file.close | ||||
run_comment_file = File.new("comment-#{k}", "w") | ||||
run_comment_file.write "#{run_comment}\n" | ||||
run_comment_file.close | ||||
all_score = all_score + run_score | ||||
|
r8 | all_comment += run_comment_short | ||
|
r0 | end | ||
result_file = File.new("result", "w") | ||||
result_file.write all_score | ||||
result_file.write "\n" | ||||
result_file.close | ||||
comment_file = File.new("comment", "w") | ||||
comment_file.write "#{all_comment}\n" | ||||
comment_file.close | ||||