diff --git a/judge/scripts/std-script/grade b/judge/scripts/std-script/grade deleted file mode 100755 --- a/judge/scripts/std-script/grade +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/ruby - -CORRECT_MARK = 'P' -INCORRECT_MARK = '-' -TIMEOUT_MARK = 'T' -RUN_ERROR_MARK = 'x' - -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 - -def char_comment(comment) - if comment =~ /[Ii]ncorrect/ - INCORRECT_MARK - elsif comment =~ /[Cc]orrect/ - CORRECT_MARK - elsif comment =~ /[Tt]ime/ - TIMEOUT_MARK - elsif res = /^[Cc]omment:(.*)$/.match(comment) - res[1] - else - RUN_ERROR_MARK # these are run time errors - 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 - log "The problem specification is not well formed." - exit(127) -end - -all_score = 0 -all_comment = '' -(1..(problem.runs.length-1)).each do |k| - log "grade run #{k}" - run = problem.runs[k] - run_score = nil - run_comment = '' - run_comment_short = '' - run.tests.each do |test_num| - result_file_name = "#{test_num}/result" - if not File.exists?(result_file_name) - run_comment += "result file for test #{test_num} not found\n" - run_comment_short += RUN_ERROR_MARK - log "Cannot find the file #{test_num}/result!" - else - result_file = File.new(result_file_name, "r") - result_file_lines = result_file.readlines - if result_file_lines.length>=2 - current_run_score = result_file_lines[1].to_i - run_comment += result_file_lines[0] - run_comment_short += char_comment(result_file_lines[0].chomp) - else - current_run_score = 0 - run_comment += "result file for test #{test_num} error\n" - run_comment_short += RUN_ERROR_MARK - log "Error in #{test_num}/result!" - end - - # the score of this run should be the minimum of the score for - # each test case - if (run_score==nil) or (run_score>current_run_score) - run_score = current_run_score - end - result_file.close - end - 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 - - # append comment for test run with many test cases - if run.tests.length > 1 - run_comment_short = '[' + run_comment_short + ']' - end - all_comment += run_comment_short -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