gettc 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +41 -0
  3. data/bin/gettc +63 -0
  4. data/core/lib/topcoder.rb +3 -0
  5. data/core/lib/topcoder/download.rb +89 -0
  6. data/core/lib/topcoder/generate.rb +131 -0
  7. data/core/lib/topcoder/parse.rb +231 -0
  8. data/core/lib/topcoder/print.rb +56 -0
  9. data/core/lib/topcoder/problem.rb +33 -0
  10. data/core/lib/topcoder/signature.rb +55 -0
  11. data/core/lib/topcoder/types.rb +62 -0
  12. data/core/test/topcoder/download_test.rb +29 -0
  13. data/core/test/topcoder/generate_test.rb +31 -0
  14. data/core/test/topcoder/parse_test.rb +104 -0
  15. data/core/test/topcoder/signature_test.rb +52 -0
  16. data/core/test/topcoder/types_test.rb +24 -0
  17. data/dist/config.yml +2 -0
  18. data/dist/include/cpp/engine.rb +90 -0
  19. data/dist/include/cpp/topcoder +212 -0
  20. data/dist/include/haskell/TopCoder.hs +82 -0
  21. data/dist/include/haskell/engine.rb +122 -0
  22. data/dist/include/java/TopCoder.jar +0 -0
  23. data/dist/include/java/engine.rb +207 -0
  24. data/dist/template/bin/runner.sh +113 -0
  25. data/dist/template/data/demo/{examples_d} +0 -0
  26. data/dist/template/data/sys/{systests_d} +0 -0
  27. data/dist/template/prob/images/{images_d} +0 -0
  28. data/dist/template/prob/{name}.html +8 -0
  29. data/dist/template/prob/{name}.md +1 -0
  30. data/dist/template/solve/cpp/Makefile +30 -0
  31. data/dist/template/solve/cpp/{name}.cpp +11 -0
  32. data/dist/template/solve/cpp/{name}Runner.cpp +26 -0
  33. data/dist/template/solve/cpp/{name}Test.cpp +8 -0
  34. data/dist/template/solve/haskell/Makefile +30 -0
  35. data/dist/template/solve/haskell/{name}.hs +7 -0
  36. data/dist/template/solve/haskell/{name}Runner.hs +27 -0
  37. data/dist/template/solve/haskell/{name}Test.hs +10 -0
  38. data/dist/template/solve/java/build.xml +78 -0
  39. data/dist/template/solve/java/{name}.java +9 -0
  40. data/dist/template/solve/java/{name}Runner.java +32 -0
  41. data/dist/template/solve/java/{name}Test.java +8 -0
  42. data/dist/template/util/check/Makefile +5 -0
  43. data/dist/template/util/check/check.cpp +26 -0
  44. metadata +121 -0
@@ -0,0 +1,7 @@
1
+ module <%= prob.name %> where
2
+ <%
3
+ engine = HaskellEngine.new func, vars
4
+ %>
5
+ <%=
6
+ engine.declare
7
+ %>
@@ -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,9 @@
1
+ <%
2
+ engine = JavaEngine.new func, vars
3
+ %>public class <%= prob.name %> {
4
+ <%=
5
+ engine.declare.gsub(/^/, ' ' * 4)
6
+ %> {
7
+ return <%= func.type.dumb_java %>;
8
+ }
9
+ }
@@ -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,8 @@
1
+ import org.junit.Test;
2
+ import static org.junit.Assert.*;
3
+
4
+ public class <%= prob.name %>Test {
5
+ @Test public void <%= func.name %>() {
6
+
7
+ }
8
+ }
@@ -0,0 +1,5 @@
1
+ default : check
2
+
3
+ check : check.cpp
4
+ if [ ! -d ../../build ]; then mkdir ../../build; fi
5
+ g++ -I$$HOME/.gettc/include/cpp -o ../../build/$@ $<
@@ -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