Show More
Commit Description:
add option -A <opt> to box. This options allow more argument to be explicitly passed to the program...
Commit Description:
add option -A <opt> to box. This options allow more argument to be explicitly passed to the program We have to use this because if the argument we wish to pass to the program is option (in -? format), box will intepret it as its option and failed accordingly. be noted that, by the definition of getopt, these options will be put after original argument (check the code for more info)
References:
File last commit:
Show/Diff file:
Action:
std-script/check | 84 lines | 1.7 KiB | text/plain | TextLexer |
#!/usr/bin/env ruby
problem_home = ENV['PROBLEM_HOME']
require "#{problem_home}/script/test_dsl.rb"
if ARGV.length < 2
puts "Usage: check <language> <test-number> [<output-file>]"
exit(0)
end
language = ARGV[0]
test_num = ARGV[1].to_i
if ARGV.length >= 3
output_file_name = ARGV[2]
else
output_file_name = "output.txt"
end
load "#{problem_home}/test_cases/all_tests.cfg"
problem = Problem.get_instance
output_file = File.new(output_file_name, "r")
answer_file = File.new("#{problem_home}/test_cases/#{test_num}/answer-#{test_num}.txt")
result_file = File.new("check_result", "w")
output_file_content = output_file.read
answer_file_content = answer_file.read
report_correct = lambda {
result_file.write "Correct\n"
result_file.write problem.get_score(test_num)
result_file.write "\n"
result_file.close
exit(0)
}
report_wrong = lambda {
result_file.write "Incorrect\n"
result_file.write "0\n"
result_file.close
exit(0)
}
##################
# Your code here #
##################
puts "YOU HAVE TO EDIT THE CHECKING CODE HERE: #{__FILE__}"
exit(127)
# below are codes for checking integer and text
########### THIS IS FOR CHECKING INTEGER ##########
num_pattern = /^[0-9]*/
if (output_file_content =~ num_pattern) == nil
report_wrong.call
end
output_i = output_file_content.to_i
answer_i = answer_file_content.to_i
if output_i == answer_i
report_correct.call
else
report_wrong.call
end
########### THIS IS FOR CHECKING TEXT ##########
# check visible text
out_items = output_file_content.split
ans_items = answer_file_content.split
if out_items.length != ans_items.length
report_wrong.call
else
out_items.length.times do |i|
if out_items[i]!=ans_items[i]
report_wrong.call
end
end
report_correct.call
end