diff --git a/import_problem b/import_problem new file mode 100755 --- /dev/null +++ b/import_problem @@ -0,0 +1,89 @@ +#!/usr/bin/ruby + +# import_problem: +# * creates a directory for a problem in the current directory, +# * copy standard scripts +# * copy testdata in the old format and create standard testcase config file + +require 'erb' + +def input_filename(dir,i) + "#{dir}/input-#{i}.txt" +end + +def answer_filename(dir,i) + "#{dir}/answer-#{i}.txt" +end + +def copy_testcase(importing_test_dir,dir,i) + system("cp #{importing_test_dir}/#{i}.in #{input_filename(dir,i)}") + system("cp #{importing_test_dir}/#{i}.sol #{answer_filename(dir,i)}") +end + +def process_options(options) + i = 3 + while ii+1 + i += 1 + end + if ARGV[i]=='-m' + options[:mem_limit] = ARGV[i+1].to_i if ARGV.length>i+1 + i += 1 + end + i += 1 + end +end + +GRADER_DIR = "/home/jittat/grader/grader_ng" + +# print usage +if ARGV.length < 3 + puts "using: import_task problem importing_testcase_dir number_of_testcase [options]" + exit(127) +end + +# processing arguments +problem = ARGV[0] +testcase_dir = ARGV[1] +num_testcases = ARGV[2].to_i + +options = {:time_limit => 1, :mem_limit => 16} +process_options(options) + +# start working +puts "creating directories" + +system("mkdir #{problem}") +system("mkdir #{problem}/script") +system("mkdir #{problem}/test_cases") +system("cp #{GRADER_DIR}/std-script/* #{problem}/script") + +puts "copying testcases" + +1.upto(num_testcases) do |i| + system("mkdir #{problem}/test_cases/#{i}") + copy_testcase("#{testcase_dir}","#{problem}/test_cases/#{i}",i) +end + + +# generating all_tests.cfg +puts "generating testcase config file" + +template = %q{ +problem do + num_tests <%= num_testcases %> + full_score <%= num_testcases*10 %> + time_limit_each <%= options[:time_limit] %> + mem_limit_each <%= options[:mem_limit] %> + score_each 10 +end +} + +all_test_cfg = ERB.new(template) + +cfg_file = File.open("#{problem}/test_cases/all_test.cfg","w") +cfg_file.puts all_test_cfg.result +cfg_file.close + +puts "done"