lib/judge_system.rb in judge_system-1.7.2 vs lib/judge_system.rb in judge_system-1.7.3
- old
+ new
@@ -1,74 +1,57 @@
-require "judge_system/version"
+require 'judge_system/version'
require 'zlib_input'
-require "net/http"
-require "uri"
-require "json"
-require 'timeout'
-require 'pathname'
+require 'net/http'
+require 'uri'
+require 'json'
module JudgeSystem
- class WandBox
+ class WandBox
+ def self.compile(compiler: '', code: '', stdin: '')
+ body = {
+ code: code,
+ compiler: compiler,
+ stdin: stdin
+ }.to_json
- 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 = JSON.generate body
- http = Net::HTTP.new(uri.host, uri.port)
- http.start do |http|
- response = http.request(request)
- JSON.parse(response.body)
- end
- end
+ uri = URI.parse('http://melpon.org/wandbox/api/compile.json')
+ request = Net::HTTP::Post.new(uri.request_uri, 'Content-type' => 'application/json')
+ request.body = body
+ http = Net::HTTP.new(uri.host, uri.port)
+ response = http.request(request)
+ JSON.parse(response.body)
+ end
- def self.run lang, code, input, time
- path = File.expand_path('../', __FILE__ )
- sys = File.open("#{path}/compile_systems/#{lang}_system.rb", "r").read
- data = nil
- spliter = "\n<$><*><$>\n"
- stdin = BZip2Input.compress(code + spliter + input + spliter + ("%f" % time))
- begin
- data = compile( compiler: "ruby-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 self.run(lang, code, input, time)
+ path = File.expand_path('../', __FILE__)
+ sys = File.open("#{path}/compile_systems/#{lang}_system.rb", 'r').read
+ data = nil
+ spliter = "\n<$><*><$>\n"
+ stdin = BZip2Input.compress(code + spliter + input + spliter + format('%f', time))
+ begin
+ data = compile(compiler: 'ruby-head', code: sys, stdin: stdin)
+ rescue
+ return 'RE'
+ end
+ error = data['program_error']
+ result = data['program_output']
+ return 'TLE' if error == "Killed\n"
+ return 'RE' if result.nil? && error
+ result
+ end
- def judge_result lang: "", code: "" , answer: "", stdin: "", time: 20
- WandBox.judge lang, code, answer, stdin, time
- end
+ private_class_method :compile, :run
- module_function :judge_result
+ def self.judge(lang, code, answer, stdin, time)
+ output = run(lang, code, stdin, time)
+ return 'TLE' if output == 'TLE'
+ return 'RE' if output == 'RE'
+ output == answer ? 'AC' : 'WA'
+ end
+ end
+
+ def judge_result(lang: '', code: '', answer: '', stdin: '', time: 20)
+ WandBox.judge(lang, code, answer, stdin, time)
+ end
+
+ module_function :judge_result
end