judge_system 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +1 -1
- data/lib/compile_systems/c_system.rb +22 -0
- data/lib/compile_systems/cpp_system.rb +22 -0
- data/lib/compile_systems/go_system.rb +21 -0
- data/lib/compile_systems/py_system.rb +21 -0
- data/lib/compile_systems/rb_system.rb +21 -0
- data/lib/judge_system/version.rb +1 -1
- data/lib/judge_system.rb +8 -7
- data/lib/zlib_input.rb +8 -0
- metadata +7 -8
- data/lib/compile_systems/c_system.cpp +0 -29
- data/lib/compile_systems/cpp_system.cpp +0 -29
- data/lib/compile_systems/go_system.cpp +0 -28
- data/lib/compile_systems/java_system.cpp +0 -88
- data/lib/compile_systems/py_system.cpp +0 -28
- data/lib/compile_systems/rb_system.cpp +0 -28
- data/test.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a45139d0e2832eccef34a7f8c6d71fa20de7f9a2
|
4
|
+
data.tar.gz: 7e10badc069a5be4e44fda91bfa880eb0467d8cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9721286ffcafc49c6fa33019743c541d80f7515dae8012993c10a8a30b2413829b06e2100a4a52bdc586470d9654ef8c87e704d7f50fca1348001d1948e9e66b
|
7
|
+
data.tar.gz: 29368cebb9d27e02998438d20b62a7ae29524bf5fd41f01feeb01fe62ab8a46f982a1b4cf9f6843db096b29c58856aae4029d1fbe4b712e52852bbc062d899d1
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -31,7 +31,7 @@ require 'judge_system'
|
|
31
31
|
JudgeSystem.judge_result lang: (string text), code: (string text), answer: (string text), stdin: (string text), time: (num sec)
|
32
32
|
|
33
33
|
#Lang is the extension of languages (example: c is 'c', c++ is 'cpp', ruby is 'rb', go is 'go', python3 is 'py').
|
34
|
-
#You can't use more than
|
34
|
+
#You can't use more than 2M byte code and input.
|
35
35
|
|
36
36
|
```
|
37
37
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'zlib'
|
2
|
+
|
3
|
+
File.open("./main.c", "w") do |file|
|
4
|
+
loop{
|
5
|
+
str = gets.chomp.to_s
|
6
|
+
break if str == "<$><*><$>"
|
7
|
+
file.puts str
|
8
|
+
}
|
9
|
+
file.close
|
10
|
+
end
|
11
|
+
|
12
|
+
File.open("./test.in", "w") do |file|
|
13
|
+
loop{
|
14
|
+
str = gets.chomp.to_s
|
15
|
+
break if str == "<$><*><$>"
|
16
|
+
file.puts Zlib::Inflate.inflate(str)
|
17
|
+
}
|
18
|
+
file.close
|
19
|
+
end
|
20
|
+
time = gets
|
21
|
+
system "/opt/wandbox/gcc-head/bin/gcc main.c -o main -O2"
|
22
|
+
system "timeout -s 9 " + time + " ./main < test.in"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'zlib'
|
2
|
+
|
3
|
+
File.open("./main.cpp", "w") do |file|
|
4
|
+
loop{
|
5
|
+
str = gets.chomp.to_s
|
6
|
+
break if str == "<$><*><$>"
|
7
|
+
file.puts str
|
8
|
+
}
|
9
|
+
file.close
|
10
|
+
end
|
11
|
+
|
12
|
+
File.open("./test.in", "w") do |file|
|
13
|
+
loop{
|
14
|
+
str = gets.chomp.to_s
|
15
|
+
break if str == "<$><*><$>"
|
16
|
+
file.puts Zlib::Inflate.inflate(str)
|
17
|
+
}
|
18
|
+
file.close
|
19
|
+
end
|
20
|
+
time = gets
|
21
|
+
system "/opt/wandbox/gcc-head/bin/g++ main.cpp -o main -O2"
|
22
|
+
system "timeout -s 9 " + time + " ./main < test.in"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'zlib'
|
2
|
+
|
3
|
+
File.open("./main.go", "w") do |file|
|
4
|
+
loop{
|
5
|
+
str = gets.chomp.to_s
|
6
|
+
break if str == "<$><*><$>"
|
7
|
+
file.puts str
|
8
|
+
}
|
9
|
+
file.close
|
10
|
+
end
|
11
|
+
|
12
|
+
File.open("./test.in", "w") do |file|
|
13
|
+
loop{
|
14
|
+
str = gets.chomp.to_s
|
15
|
+
break if str == "<$><*><$>"
|
16
|
+
file.puts Zlib::Inflate.inflate(str)
|
17
|
+
}
|
18
|
+
file.close
|
19
|
+
end
|
20
|
+
time = gets
|
21
|
+
system "timeout -s 9 " + time + " /opt/wandbox/go-head/bin/go run main.go < test.in"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'zlib'
|
2
|
+
|
3
|
+
File.open("./main.py", "w") do |file|
|
4
|
+
loop{
|
5
|
+
str = gets.chomp.to_s
|
6
|
+
break if str == "<$><*><$>"
|
7
|
+
file.puts str
|
8
|
+
}
|
9
|
+
file.close
|
10
|
+
end
|
11
|
+
|
12
|
+
File.open("./test.in", "w") do |file|
|
13
|
+
loop{
|
14
|
+
str = gets.chomp.to_s
|
15
|
+
break if str == "<$><*><$>"
|
16
|
+
file.puts Zlib::Inflate.inflate(str)
|
17
|
+
}
|
18
|
+
file.close
|
19
|
+
end
|
20
|
+
time = gets
|
21
|
+
system "timeout -s 9 " + time + " /opt/wandbox/cpython-head/bin/python3 main.py < test.in"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'zlib'
|
2
|
+
|
3
|
+
File.open("./main.rb", "w") do |file|
|
4
|
+
loop{
|
5
|
+
str = gets.chomp.to_s
|
6
|
+
break if str == "<$><*><$>"
|
7
|
+
file.puts str
|
8
|
+
}
|
9
|
+
file.close
|
10
|
+
end
|
11
|
+
|
12
|
+
File.open("./test.in", "w") do |file|
|
13
|
+
loop{
|
14
|
+
str = gets.chomp.to_s
|
15
|
+
break if str == "<$><*><$>"
|
16
|
+
file.puts Zlib::Inflate.inflate(str)
|
17
|
+
}
|
18
|
+
file.close
|
19
|
+
end
|
20
|
+
time = gets
|
21
|
+
system "timeout -s 9 " + time + " /opt/wandbox/ruby-head/bin/ruby main.rb < test.in"
|
data/lib/judge_system/version.rb
CHANGED
data/lib/judge_system.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require "judge_system/version"
|
2
|
+
require 'zlib_input'
|
2
3
|
require "net/http"
|
3
4
|
require "uri"
|
4
5
|
require "json"
|
5
6
|
require 'timeout'
|
6
7
|
require 'pathname'
|
7
|
-
|
8
8
|
module JudgeSystem
|
9
9
|
class WandBox
|
10
10
|
|
@@ -16,7 +16,7 @@ module JudgeSystem
|
|
16
16
|
}
|
17
17
|
uri = URI.parse("http://melpon.org/wandbox/api/compile.json")
|
18
18
|
request = Net::HTTP::Post.new(uri.request_uri, initheader = { "Content-type" => "application/json" },)
|
19
|
-
request.body = body
|
19
|
+
request.body = JSON.generate body
|
20
20
|
http = Net::HTTP.new(uri.host, uri.port)
|
21
21
|
http.start do |http|
|
22
22
|
response = http.request(request)
|
@@ -26,14 +26,15 @@ module JudgeSystem
|
|
26
26
|
|
27
27
|
def self.run lang, code, input, time
|
28
28
|
path = File.expand_path('../', __FILE__ )
|
29
|
-
sys = File.open("#{path}/compile_systems/#{lang}_system.
|
29
|
+
sys = File.open("#{path}/compile_systems/#{lang}_system.rb", "r").read
|
30
30
|
data = nil
|
31
31
|
spliter = "\n<$><*><$>\n"
|
32
|
+
input = ZlibInput.zlib(input)
|
32
33
|
stdin = code + spliter + input + spliter + ("%f" % time)
|
33
34
|
begin
|
34
|
-
data = compile( compiler: "
|
35
|
-
rescue
|
36
|
-
return
|
35
|
+
data = compile( compiler: "ruby-head", code: sys, stdin: stdin )
|
36
|
+
rescue
|
37
|
+
return "RE"
|
37
38
|
end
|
38
39
|
error = data["program_error"]
|
39
40
|
result = data["program_output"]
|
@@ -65,7 +66,7 @@ module JudgeSystem
|
|
65
66
|
end
|
66
67
|
end
|
67
68
|
|
68
|
-
def judge_result lang: "", code: "" , answer: "", stdin: "", time:
|
69
|
+
def judge_result lang: "", code: "" , answer: "", stdin: "", time: 20
|
69
70
|
WandBox.judge lang, code, answer, stdin, time
|
70
71
|
end
|
71
72
|
|
data/lib/zlib_input.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: judge_system
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- getty104
|
@@ -71,15 +71,14 @@ files:
|
|
71
71
|
- bin/console
|
72
72
|
- bin/setup
|
73
73
|
- judge_system.gemspec
|
74
|
-
- lib/compile_systems/c_system.
|
75
|
-
- lib/compile_systems/cpp_system.
|
76
|
-
- lib/compile_systems/go_system.
|
77
|
-
- lib/compile_systems/
|
78
|
-
- lib/compile_systems/
|
79
|
-
- lib/compile_systems/rb_system.cpp
|
74
|
+
- lib/compile_systems/c_system.rb
|
75
|
+
- lib/compile_systems/cpp_system.rb
|
76
|
+
- lib/compile_systems/go_system.rb
|
77
|
+
- lib/compile_systems/py_system.rb
|
78
|
+
- lib/compile_systems/rb_system.rb
|
80
79
|
- lib/judge_system.rb
|
81
80
|
- lib/judge_system/version.rb
|
82
|
-
-
|
81
|
+
- lib/zlib_input.rb
|
83
82
|
- wercker.yml
|
84
83
|
homepage: https://github.com/getty104/judge_system
|
85
84
|
licenses:
|
@@ -1,29 +0,0 @@
|
|
1
|
-
#include <iostream>
|
2
|
-
#include <fstream>
|
3
|
-
using namespace std;
|
4
|
-
|
5
|
-
char command[1024];
|
6
|
-
|
7
|
-
int main(int argc, char const *argv[])
|
8
|
-
{
|
9
|
-
ofstream ofs;
|
10
|
-
ofs.open("main.c",ios::binary);
|
11
|
-
string buf;
|
12
|
-
string splitter="<$><*><$>";
|
13
|
-
string time;
|
14
|
-
while(getline(cin,buf)){
|
15
|
-
if(buf==splitter)break;
|
16
|
-
ofs<<buf<<endl;
|
17
|
-
}
|
18
|
-
ofs.close();
|
19
|
-
ofs.open("test.in",ios::binary);
|
20
|
-
while(getline(cin,buf)){
|
21
|
-
if(buf==splitter)break;
|
22
|
-
ofs<<buf<<endl;
|
23
|
-
}
|
24
|
-
ofs.close();
|
25
|
-
cin>>time;
|
26
|
-
system("/opt/wandbox/gcc-head/bin/gcc main.c -o main -O2");
|
27
|
-
system(("timeout -s 9 " + time + " ./main < test.in").c_str());
|
28
|
-
return 0;
|
29
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
#include <iostream>
|
2
|
-
#include <fstream>
|
3
|
-
using namespace std;
|
4
|
-
|
5
|
-
char command[1024];
|
6
|
-
|
7
|
-
int main(int argc, char const *argv[])
|
8
|
-
{
|
9
|
-
ofstream ofs;
|
10
|
-
ofs.open("main.cpp",ios::binary);
|
11
|
-
string buf;
|
12
|
-
string splitter="<$><*><$>";
|
13
|
-
string time;
|
14
|
-
while(getline(cin,buf)){
|
15
|
-
if(buf==splitter)break;
|
16
|
-
ofs<<buf<<endl;
|
17
|
-
}
|
18
|
-
ofs.close();
|
19
|
-
ofs.open("test.in",ios::binary);
|
20
|
-
while(getline(cin,buf)){
|
21
|
-
if(buf==splitter)break;
|
22
|
-
ofs<<buf<<endl;
|
23
|
-
}
|
24
|
-
ofs.close();
|
25
|
-
cin>>time;
|
26
|
-
system("/opt/wandbox/gcc-head/bin/g++ main.cpp -o main -O2");
|
27
|
-
system(("timeout -s 9 " + time + " ./main < test.in").c_str());
|
28
|
-
return 0;
|
29
|
-
}
|
@@ -1,28 +0,0 @@
|
|
1
|
-
#include <iostream>
|
2
|
-
#include <fstream>
|
3
|
-
using namespace std;
|
4
|
-
|
5
|
-
char command[1024];
|
6
|
-
|
7
|
-
int main(int argc, char const *argv[])
|
8
|
-
{
|
9
|
-
ofstream ofs;
|
10
|
-
ofs.open("main.go",ios::binary);
|
11
|
-
string buf;
|
12
|
-
string splitter="<$><*><$>";
|
13
|
-
string time;
|
14
|
-
while(getline(cin,buf)){
|
15
|
-
if(buf==splitter)break;
|
16
|
-
ofs<<buf<<endl;
|
17
|
-
}
|
18
|
-
ofs.close();
|
19
|
-
ofs.open("test.in",ios::binary);
|
20
|
-
while(getline(cin,buf)){
|
21
|
-
if(buf==splitter)break;
|
22
|
-
ofs<<buf<<endl;
|
23
|
-
}
|
24
|
-
ofs.close();
|
25
|
-
cin>>time;
|
26
|
-
system(("timeout -s 9 " + time + " /opt/wandbox/go-head/bin/go run main.go < test.in ").c_str());
|
27
|
-
return 0;
|
28
|
-
}
|
@@ -1,88 +0,0 @@
|
|
1
|
-
#include <iostream>
|
2
|
-
#include <fstream>
|
3
|
-
using namespace std;
|
4
|
-
|
5
|
-
int main(int argc, char const *argv[])
|
6
|
-
{
|
7
|
-
ofstream ofs;
|
8
|
-
ofs.open("Main.java",ios::binary);
|
9
|
-
string buf;
|
10
|
-
while(getline(cin,buf)){
|
11
|
-
if(buf=="<$><*><$>")break;
|
12
|
-
ofs<<buf<<endl;
|
13
|
-
}
|
14
|
-
ofs.close();
|
15
|
-
ofs.open("test.in",ios::binary);
|
16
|
-
while(getline(cin,buf)){
|
17
|
-
ofs<<buf<<endl;
|
18
|
-
}
|
19
|
-
ofs.close();
|
20
|
-
system("/opt/wandbox/openjdk-head/bin/javac Main.java");
|
21
|
-
system("/usr/bin/time -f '%U' /opt/wandbox/openjdk-head/bin/java Main < test.in");
|
22
|
-
return 0;
|
23
|
-
}
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
/*
|
29
|
-
import java.util.*;
|
30
|
-
import java.io.*;
|
31
|
-
class Career{
|
32
|
-
public static void main(String[] args){
|
33
|
-
|
34
|
-
BufferedReader sc;
|
35
|
-
File code;
|
36
|
-
File stdin;
|
37
|
-
FileWriter pw1;
|
38
|
-
FileWriter pw2;
|
39
|
-
String str;
|
40
|
-
BufferedReader br1;
|
41
|
-
BufferedReader br2;
|
42
|
-
Runtime r;
|
43
|
-
Runtime rr;
|
44
|
-
InputStream compile;
|
45
|
-
InputStream run;
|
46
|
-
|
47
|
-
try{
|
48
|
-
sc = new BufferedReader(new InputStreamReader(System.in));
|
49
|
-
code = new File("Main.java");
|
50
|
-
code.createNewFile();
|
51
|
-
code = new File("Main.java");
|
52
|
-
stdin = new File("test.in");
|
53
|
-
stdin.createNewFile();
|
54
|
-
stdin = new File("test.in");
|
55
|
-
pw1 = new FileWriter(code, true);
|
56
|
-
pw2 = new FileWriter(stdin, true);
|
57
|
-
while(true){
|
58
|
-
str = sc.readLine();
|
59
|
-
if(str.equals("<$><*><$>")){
|
60
|
-
break;
|
61
|
-
}
|
62
|
-
pw1.write(str);
|
63
|
-
}
|
64
|
-
pw1.close();
|
65
|
-
|
66
|
-
|
67
|
-
while((str = sc.readLine()) != null){
|
68
|
-
pw2.write(str);
|
69
|
-
}
|
70
|
-
pw2.close();
|
71
|
-
r = Runtime.getRuntime();
|
72
|
-
rr = Runtime.getRuntime();
|
73
|
-
compile = r.exec("/opt/wandbox/openjdk-head/bin/javac Main.java").getInputStream();
|
74
|
-
run = rr.exec("/opt/wandbox/openjdk-head/bin/java Main < test.in").getInputStream();
|
75
|
-
br1 = new BufferedReader(new InputStreamReader(compile));
|
76
|
-
br2 = new BufferedReader(new InputStreamReader(run));
|
77
|
-
while ((str = br1.readLine()) != null) {
|
78
|
-
System.out.println(str);
|
79
|
-
}
|
80
|
-
while ((str = br2.readLine()) != null) {
|
81
|
-
System.out.println(str);
|
82
|
-
}
|
83
|
-
}catch(Exception e ){
|
84
|
-
e.printStackTrace();
|
85
|
-
}
|
86
|
-
}
|
87
|
-
}
|
88
|
-
*/
|
@@ -1,28 +0,0 @@
|
|
1
|
-
#include <iostream>
|
2
|
-
#include <fstream>
|
3
|
-
using namespace std;
|
4
|
-
|
5
|
-
char command[1024];
|
6
|
-
|
7
|
-
int main(int argc, char const *argv[])
|
8
|
-
{
|
9
|
-
ofstream ofs;
|
10
|
-
ofs.open("main.py",ios::binary);
|
11
|
-
string buf;
|
12
|
-
string splitter="<$><*><$>";
|
13
|
-
string time;
|
14
|
-
while(getline(cin,buf)){
|
15
|
-
if(buf==splitter)break;
|
16
|
-
ofs<<buf<<endl;
|
17
|
-
}
|
18
|
-
ofs.close();
|
19
|
-
ofs.open("test.in",ios::binary);
|
20
|
-
while(getline(cin,buf)){
|
21
|
-
if(buf==splitter)break;
|
22
|
-
ofs<<buf<<endl;
|
23
|
-
}
|
24
|
-
ofs.close();
|
25
|
-
cin>>time;
|
26
|
-
system(("timeout -s 9 " + time + " /opt/wandbox/cpython-head/bin/python3 main.py < test.in").c_str());
|
27
|
-
return 0;
|
28
|
-
}
|
@@ -1,28 +0,0 @@
|
|
1
|
-
#include <iostream>
|
2
|
-
#include <fstream>
|
3
|
-
using namespace std;
|
4
|
-
|
5
|
-
char command[1024];
|
6
|
-
|
7
|
-
int main(int argc, char const *argv[])
|
8
|
-
{
|
9
|
-
ofstream ofs;
|
10
|
-
ofs.open("main.rb",ios::binary);
|
11
|
-
string buf;
|
12
|
-
string splitter="<$><*><$>";
|
13
|
-
string time;
|
14
|
-
while(getline(cin,buf)){
|
15
|
-
if(buf==splitter)break;
|
16
|
-
ofs<<buf<<endl;
|
17
|
-
}
|
18
|
-
ofs.close();
|
19
|
-
ofs.open("test.in",ios::binary);
|
20
|
-
while(getline(cin,buf)){
|
21
|
-
if(buf==splitter)break;
|
22
|
-
ofs<<buf<<endl;
|
23
|
-
}
|
24
|
-
ofs.close();
|
25
|
-
cin>>time;
|
26
|
-
system(("timeout -s 9 " + time + " /opt/wandbox/ruby-head/bin/ruby main.rb < test.in").c_str());
|
27
|
-
return 0;
|
28
|
-
}
|
data/test.rb
DELETED
File without changes
|