gettc 1.2.2
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 +7 -0
- data/Rakefile +41 -0
- data/bin/gettc +63 -0
- data/core/lib/topcoder.rb +3 -0
- data/core/lib/topcoder/download.rb +89 -0
- data/core/lib/topcoder/generate.rb +131 -0
- data/core/lib/topcoder/parse.rb +231 -0
- data/core/lib/topcoder/print.rb +56 -0
- data/core/lib/topcoder/problem.rb +33 -0
- data/core/lib/topcoder/signature.rb +55 -0
- data/core/lib/topcoder/types.rb +62 -0
- data/core/test/topcoder/download_test.rb +29 -0
- data/core/test/topcoder/generate_test.rb +31 -0
- data/core/test/topcoder/parse_test.rb +104 -0
- data/core/test/topcoder/signature_test.rb +52 -0
- data/core/test/topcoder/types_test.rb +24 -0
- data/dist/config.yml +2 -0
- data/dist/include/cpp/engine.rb +90 -0
- data/dist/include/cpp/topcoder +212 -0
- data/dist/include/haskell/TopCoder.hs +82 -0
- data/dist/include/haskell/engine.rb +122 -0
- data/dist/include/java/TopCoder.jar +0 -0
- data/dist/include/java/engine.rb +207 -0
- data/dist/template/bin/runner.sh +113 -0
- data/dist/template/data/demo/{examples_d} +0 -0
- data/dist/template/data/sys/{systests_d} +0 -0
- data/dist/template/prob/images/{images_d} +0 -0
- data/dist/template/prob/{name}.html +8 -0
- data/dist/template/prob/{name}.md +1 -0
- data/dist/template/solve/cpp/Makefile +30 -0
- data/dist/template/solve/cpp/{name}.cpp +11 -0
- data/dist/template/solve/cpp/{name}Runner.cpp +26 -0
- data/dist/template/solve/cpp/{name}Test.cpp +8 -0
- data/dist/template/solve/haskell/Makefile +30 -0
- data/dist/template/solve/haskell/{name}.hs +7 -0
- data/dist/template/solve/haskell/{name}Runner.hs +27 -0
- data/dist/template/solve/haskell/{name}Test.hs +10 -0
- data/dist/template/solve/java/build.xml +78 -0
- data/dist/template/solve/java/{name}.java +9 -0
- data/dist/template/solve/java/{name}Runner.java +32 -0
- data/dist/template/solve/java/{name}Test.java +8 -0
- data/dist/template/util/check/Makefile +5 -0
- data/dist/template/util/check/check.cpp +26 -0
- metadata +121 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
import TopCoder
|
2
|
+
import System.Environment (getArgs)
|
3
|
+
import System.IO
|
4
|
+
import <%= prob.name %>
|
5
|
+
<%
|
6
|
+
engine = HaskellEngine.new func, vars
|
7
|
+
%>
|
8
|
+
<%=
|
9
|
+
engine.input
|
10
|
+
%>
|
11
|
+
|
12
|
+
main = do
|
13
|
+
args <- getArgs
|
14
|
+
hIn <- openFile (head args) ReadMode
|
15
|
+
contents <- hGetContents hIn
|
16
|
+
case (parse getVars "variables" contents) of
|
17
|
+
Left err -> print err
|
18
|
+
Right (<%=
|
19
|
+
temp = engine.vars.map do |var| var.name end
|
20
|
+
temp.join(', ')
|
21
|
+
%>) -> do
|
22
|
+
hOut <- openFile (head (tail args)) WriteMode
|
23
|
+
hPutStr hOut $ show $ <%=
|
24
|
+
engine.output
|
25
|
+
%>
|
26
|
+
hClose hOut
|
27
|
+
hClose hIn
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import Test.HUnit
|
2
|
+
import <%= prob.name %>
|
3
|
+
<% test_name = func.name[0].upcase + func.name[1..-1] %>
|
4
|
+
test<%= test_name %> :: Test
|
5
|
+
test<%= test_name %> = TestCase
|
6
|
+
(assertEqual "" 0 0)
|
7
|
+
|
8
|
+
tests = TestList [ TestLabel "test<%= test_name %>" test<%= test_name %> ]
|
9
|
+
|
10
|
+
main = runTestTT tests
|
@@ -0,0 +1,78 @@
|
|
1
|
+
<project name="<%= prob.name %>" basedir="." default="demo">
|
2
|
+
<property environment="env"/>
|
3
|
+
|
4
|
+
<property name="data.dir" value="${basedir}/../../data"/>
|
5
|
+
<property name="output.dir" value="${basedir}/../../build/java"/>
|
6
|
+
<property name="lib" value="${env.HOME}/.gettc/include/java/TopCoder.jar"/>
|
7
|
+
<property name="java.sh" value="${output.dir}/java.sh"/>
|
8
|
+
<property name="runner.sh" value="${basedir}/../../bin/runner.sh"/>
|
9
|
+
|
10
|
+
<path id="classpath">
|
11
|
+
<pathelement location="${output.dir}"/>
|
12
|
+
<pathelement location="${lib}"/>
|
13
|
+
</path>
|
14
|
+
|
15
|
+
<target name="runner">
|
16
|
+
<echo file="${java.sh}" append="no">#! /bin/sh
|
17
|
+
java -cp "`dirname $0`${path.separator}${lib}" <%= prob.name %>Runner $$*
|
18
|
+
</echo>
|
19
|
+
<chmod file="${java.sh}" perm="+x"/>
|
20
|
+
</target>
|
21
|
+
|
22
|
+
<target name="compile-main">
|
23
|
+
<mkdir dir="${output.dir}"/>
|
24
|
+
<javac srcdir="." destdir="${output.dir}"
|
25
|
+
includes="<%= prob.name %>.java,<%= prob.name %>Runner.java"
|
26
|
+
includeantruntime="no">
|
27
|
+
<classpath refid="classpath"/>
|
28
|
+
</javac>
|
29
|
+
</target>
|
30
|
+
|
31
|
+
<target name="demo" depends="compile-main,runner">
|
32
|
+
<exec executable="sh">
|
33
|
+
<arg value="${runner.sh}"/>
|
34
|
+
<arg value="verbose"/>
|
35
|
+
<arg value="${java.sh}"/>
|
36
|
+
<arg value="${data.dir}/demo"/>
|
37
|
+
<arg value="${output.dir}/demo"/>
|
38
|
+
</exec>
|
39
|
+
</target>
|
40
|
+
<target name="sys" depends="compile-main,runner">
|
41
|
+
<exec executable="sh">
|
42
|
+
<arg value="${runner.sh}"/>
|
43
|
+
<arg value="quiet"/>
|
44
|
+
<arg value="${java.sh}"/>
|
45
|
+
<arg value="${data.dir}/sys"/>
|
46
|
+
<arg value="${output.dir}/sys"/>
|
47
|
+
</exec>
|
48
|
+
</target>
|
49
|
+
<target name="sysv" depends="compile-main,runner">
|
50
|
+
<exec executable="sh">
|
51
|
+
<arg value="${runner.sh}"/>
|
52
|
+
<arg value="verbose"/>
|
53
|
+
<arg value="${java.sh}"/>
|
54
|
+
<arg value="${data.dir}/sys"/>
|
55
|
+
<arg value="${output.dir}/sys"/>
|
56
|
+
</exec>
|
57
|
+
</target>
|
58
|
+
|
59
|
+
<target name="compile-test">
|
60
|
+
<mkdir dir="${output.dir}"/>
|
61
|
+
<javac srcdir="." destdir="${output.dir}"
|
62
|
+
includes="<%= prob.name %>.java,<%= prob.name %>Test.java"
|
63
|
+
includeantruntime="yes">
|
64
|
+
<classpath location="${output.dir}"/>
|
65
|
+
</javac>
|
66
|
+
</target>
|
67
|
+
<target name="test" depends="compile-test">
|
68
|
+
<junit fork="yes" haltonfailure="yes">
|
69
|
+
<classpath location="${output.dir}"/>
|
70
|
+
<formatter type="plain" usefile="false" />
|
71
|
+
<test name="<%= prob.name %>Test"/>
|
72
|
+
</junit>
|
73
|
+
</target>
|
74
|
+
|
75
|
+
<target name="clean">
|
76
|
+
<delete dir="${output.dir}"/>
|
77
|
+
</target>
|
78
|
+
</project>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import java.io.FileReader;
|
2
|
+
import java.io.FileWriter;
|
3
|
+
|
4
|
+
import java.util.List;
|
5
|
+
import java.util.ArrayList;
|
6
|
+
|
7
|
+
import org.topcoder.TopcoderReader;
|
8
|
+
import org.topcoder.TopcoderWriter;
|
9
|
+
import org.topcoder.TypeRef;
|
10
|
+
<%
|
11
|
+
engine = JavaEngine.new func, vars
|
12
|
+
%>
|
13
|
+
public class <%= prob.name %>Runner {
|
14
|
+
public static void main(String[] args) {
|
15
|
+
try {
|
16
|
+
TopcoderReader reader = new TopcoderReader(new FileReader(args[0]));
|
17
|
+
<%=
|
18
|
+
engine.input.gsub(/^/, ' ' * 8)
|
19
|
+
%>
|
20
|
+
reader.close();
|
21
|
+
|
22
|
+
<%= prob.name %> solver = new <%= prob.name %>();
|
23
|
+
TopcoderWriter writer = new TopcoderWriter(new FileWriter(args[1]));
|
24
|
+
<%=
|
25
|
+
engine.output.gsub(/^/, ' ' * 8)
|
26
|
+
%>
|
27
|
+
writer.close();
|
28
|
+
} catch (Exception err) {
|
29
|
+
err.printStackTrace(System.err);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#include <topcoder>
|
2
|
+
using namespace TopCoder;
|
3
|
+
#include <fstream>
|
4
|
+
using namespace std;
|
5
|
+
<%
|
6
|
+
engine = CppEngine.new func, vars
|
7
|
+
%>
|
8
|
+
int main(int argc, char *argv[]) {
|
9
|
+
try {
|
10
|
+
<%= engine.func.type.to_cpp %> output, result;
|
11
|
+
ifstream ifs;
|
12
|
+
|
13
|
+
ifs.open(argv[1]);
|
14
|
+
read(ifs, output);
|
15
|
+
ifs.close();
|
16
|
+
|
17
|
+
ifs.open(argv[2]);
|
18
|
+
read(ifs, result);
|
19
|
+
ifs.close();
|
20
|
+
|
21
|
+
return same(output, result) ? 0 : 1;
|
22
|
+
} catch (exception &e) {
|
23
|
+
cerr << e.what() << endl;
|
24
|
+
}
|
25
|
+
return 2;
|
26
|
+
}
|
metadata
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gettc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Seri
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-07-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: hpricot
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bluecloth
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Given a TopCoder problem ID, gettc downloads the problem specification,
|
42
|
+
parses the whole thing into a Markdown file, generates inputs/outputs based on the
|
43
|
+
Examples and System Tests given, and finally generates basic solution files for
|
44
|
+
you to get started.
|
45
|
+
email: seritrinh@gmail.com
|
46
|
+
executables:
|
47
|
+
- gettc
|
48
|
+
extensions: []
|
49
|
+
extra_rdoc_files: []
|
50
|
+
files:
|
51
|
+
- bin/gettc
|
52
|
+
- core/lib/topcoder.rb
|
53
|
+
- core/lib/topcoder/download.rb
|
54
|
+
- core/lib/topcoder/generate.rb
|
55
|
+
- core/lib/topcoder/parse.rb
|
56
|
+
- core/lib/topcoder/print.rb
|
57
|
+
- core/lib/topcoder/problem.rb
|
58
|
+
- core/lib/topcoder/signature.rb
|
59
|
+
- core/lib/topcoder/types.rb
|
60
|
+
- dist/config.yml
|
61
|
+
- dist/include/cpp/engine.rb
|
62
|
+
- dist/include/cpp/topcoder
|
63
|
+
- dist/include/haskell/TopCoder.hs
|
64
|
+
- dist/include/haskell/engine.rb
|
65
|
+
- dist/include/java/TopCoder.jar
|
66
|
+
- dist/include/java/engine.rb
|
67
|
+
- dist/template/bin/runner.sh
|
68
|
+
- dist/template/data/demo/{examples_d}
|
69
|
+
- dist/template/data/sys/{systests_d}
|
70
|
+
- dist/template/prob/images/{images_d}
|
71
|
+
- dist/template/prob/{name}.html
|
72
|
+
- dist/template/prob/{name}.md
|
73
|
+
- dist/template/solve/cpp/Makefile
|
74
|
+
- dist/template/solve/cpp/{name}.cpp
|
75
|
+
- dist/template/solve/cpp/{name}Runner.cpp
|
76
|
+
- dist/template/solve/cpp/{name}Test.cpp
|
77
|
+
- dist/template/solve/haskell/Makefile
|
78
|
+
- dist/template/solve/haskell/{name}.hs
|
79
|
+
- dist/template/solve/haskell/{name}Runner.hs
|
80
|
+
- dist/template/solve/haskell/{name}Test.hs
|
81
|
+
- dist/template/solve/java/build.xml
|
82
|
+
- dist/template/solve/java/{name}.java
|
83
|
+
- dist/template/solve/java/{name}Runner.java
|
84
|
+
- dist/template/solve/java/{name}Test.java
|
85
|
+
- dist/template/util/check/Makefile
|
86
|
+
- dist/template/util/check/check.cpp
|
87
|
+
- Rakefile
|
88
|
+
- core/test/topcoder/download_test.rb
|
89
|
+
- core/test/topcoder/generate_test.rb
|
90
|
+
- core/test/topcoder/parse_test.rb
|
91
|
+
- core/test/topcoder/signature_test.rb
|
92
|
+
- core/test/topcoder/types_test.rb
|
93
|
+
homepage: http://seriessays.blogspot.com
|
94
|
+
licenses: []
|
95
|
+
metadata: {}
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- core/lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubyforge_project:
|
112
|
+
rubygems_version: 2.0.2
|
113
|
+
signing_key:
|
114
|
+
specification_version: 4
|
115
|
+
summary: Download TopCoder problem and generate a skeleton solution
|
116
|
+
test_files:
|
117
|
+
- core/test/topcoder/download_test.rb
|
118
|
+
- core/test/topcoder/generate_test.rb
|
119
|
+
- core/test/topcoder/parse_test.rb
|
120
|
+
- core/test/topcoder/signature_test.rb
|
121
|
+
- core/test/topcoder/types_test.rb
|