Sha256: 447ed928a63874a41fcb41f46ea30d91353f0c27c190f6857898270f211ef7f9
Contents?: true
Size: 1.67 KB
Versions: 1
Compression:
Stored size: 1.67 KB
Contents
require "judge_system/version" require "net/http" require "uri" require "json" require 'timeout' require 'pathname' module JudgeSystem class WandBox def self.compile compiler: "", code: "", stdin: "" body = { code: code, compiler: compiler, stdin: stdin, } uri = URI.parse("http://melpon.org/wandbox/api/compile.json") request = Net::HTTP::Post.new(uri.request_uri, initheader = { "Content-type" => "application/json" },) request.body = body.to_json http = Net::HTTP.new(uri.host, uri.port) http.start do |http| response = http.request(request) JSON.parse(response.body) end end def self.run lang, code, input, time path = File.expand_path('../', __FILE__ ) sys = File.open("#{path}/compile_systems/#{lang}_system.cpp", "r").read data = nil spliter = "\n<$><*><$>\n" stdin = code + spliter + input + spliter + ("%f" % time) begin data = compile( compiler: "gcc-head", code: sys, stdin: stdin ) rescue return 'RE' end error = data["program_error"] result = data["program_output"] if error == "Killed\n" return 'TLE' elsif result == nil && error return "RE" else return result end end private_class_method :compile, :run public def self.judge lang, code , answer, stdin, time output = run lang, code, stdin, time if output == 'TLE' return 'TLE' elsif output == 'RE' return 'RE' else result = output == answer if result return 'AC' else return 'WA' end end end end def judge_result lang: "", code: "" , answer: "", stdin: "", time: 100 WandBox.judge lang, code, answer, stdin, time end module_function :judge_result end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
judge_system-1.4.0 | lib/judge_system.rb |