#!/usr/bin/ruby problem_home = ENV['PROBLEM_HOME'] require "#{problem_home}/script/test_dsl.rb" if ARGV.length < 2 puts "Usage: check []" 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