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.
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