gettc 1.7.5.2 → 1.8
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/bin/gettc +1 -1
- data/core/lib/version.rb +1 -1
- data/dist/include/python/topcoder/__pycache__/__init__.cpython-32.pyc +0 -0
- data/dist/include/python/topcoder/__pycache__/errors.cpython-32.pyc +0 -0
- data/dist/include/python/topcoder/__pycache__/reader.cpython-32.pyc +0 -0
- data/dist/include/python/topcoder/__pycache__/writer.cpython-32.pyc +0 -0
- data/dist/template/bin/runner.rb +173 -0
- data/dist/template/bin/runner.sh +47 -43
- data/dist/template/solve/cpp/Makefile +7 -4
- data/dist/template/solve/go/Makefile +7 -4
- data/dist/template/solve/haskell/Makefile +7 -4
- data/dist/template/solve/java/Makefile +4 -4
- data/dist/template/solve/python/Makefile +4 -4
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13ea9a48db98416575bd26b1280e0b50e00813fd
|
4
|
+
data.tar.gz: fd1bedf6f9f2ccef304249223ffec8b31ac87ce3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6fa57ef95644085a280927ec69edcc6fedec7e65b875c998a89c3bcbf8bbf6a757e99dca0506869b9fc48723906767a487a739de65a9d671a378a850d7888b47
|
7
|
+
data.tar.gz: deadbb5bb05c3b74c1a709f9303992c2182a46fa4cf825f5c747188a2bd31a67123c78de8557d1451fa98c0bbb7ee7e412f628b4058f6b13485ee624c7b8d0b3
|
data/bin/gettc
CHANGED
@@ -46,7 +46,7 @@ def main
|
|
46
46
|
usage = <<-eos.strip
|
47
47
|
gettc <id>: Generate a solution for the TopCoder problem with that ID, eg 11138.
|
48
48
|
gettc version: Print version string.
|
49
|
-
gettc reset:
|
49
|
+
gettc reset: Bring all settings to default state.
|
50
50
|
eos
|
51
51
|
if ARGV.empty?
|
52
52
|
puts usage
|
data/core/lib/version.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,173 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
require "logger"
|
3
|
+
|
4
|
+
class SysUtil
|
5
|
+
def self.with_dir dir
|
6
|
+
saved = FileUtils.pwd
|
7
|
+
FileUtils.chdir dir
|
8
|
+
yield
|
9
|
+
FileUtils.chdir saved
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class StopWatch
|
14
|
+
def self.measure
|
15
|
+
before = Time.now
|
16
|
+
yield
|
17
|
+
after = Time.now
|
18
|
+
return ((after - before) * 1000).round
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class GettcRunner
|
23
|
+
def initialize mode, solver, data_d, output_d
|
24
|
+
@verbose = (mode == "verbose")
|
25
|
+
@solver = solver
|
26
|
+
@data_d = data_d
|
27
|
+
@output_d = output_d
|
28
|
+
|
29
|
+
@dir = File.dirname __FILE__
|
30
|
+
|
31
|
+
FileUtils.mkdir_p @output_d
|
32
|
+
|
33
|
+
@log = Logger.new STDOUT
|
34
|
+
@log.formatter = proc do |severity, datetime, progname, message|
|
35
|
+
message
|
36
|
+
end
|
37
|
+
@log.level = Logger::INFO
|
38
|
+
if @verbose
|
39
|
+
@log.level = Logger::DEBUG
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def compile_checker
|
44
|
+
puts "[gettc] Compile checker"
|
45
|
+
@checker = File.join @dir, "../build/check"
|
46
|
+
unless File.exists? @checker
|
47
|
+
checker_src = File.join @dir, "../util/check"
|
48
|
+
SysUtil::with_dir checker_src do
|
49
|
+
system "make"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def populate_filenames n
|
55
|
+
input = File.join @data_d, "#{n}.in"
|
56
|
+
expected = File.join @data_d, "#{n}.out"
|
57
|
+
received = File.join @output_d, "#{n}.out"
|
58
|
+
return input, expected, received
|
59
|
+
end
|
60
|
+
|
61
|
+
def print_file_content label, filename
|
62
|
+
print " #{label}: <"
|
63
|
+
print File.read(filename)
|
64
|
+
puts ">"
|
65
|
+
end
|
66
|
+
|
67
|
+
def print_case n
|
68
|
+
input, expected, received = populate_filenames n
|
69
|
+
print_file_content "Input", input
|
70
|
+
print_file_content "Expected", expected
|
71
|
+
print_file_content "Received", received
|
72
|
+
end
|
73
|
+
|
74
|
+
def run_case n
|
75
|
+
input, expected, received = populate_filenames n
|
76
|
+
|
77
|
+
@log.debug "Case #{n} ... "
|
78
|
+
ret = true
|
79
|
+
|
80
|
+
elapsed = StopWatch::measure do
|
81
|
+
ret = system "#{@solver} #{input} #{received}"
|
82
|
+
end
|
83
|
+
@elapsed << elapsed
|
84
|
+
@log.debug "#{elapsed}ms "
|
85
|
+
|
86
|
+
if ret != true
|
87
|
+
@errors << n
|
88
|
+
@log.debug "Error\n"
|
89
|
+
else
|
90
|
+
system "#{@checker} #{expected} #{received}"
|
91
|
+
ret = $?.exitstatus
|
92
|
+
case ret
|
93
|
+
when 0
|
94
|
+
@log.debug "Passed\n"
|
95
|
+
when 1
|
96
|
+
@log.debug "Failed\n"
|
97
|
+
@failures << n
|
98
|
+
print_case n if @verbose
|
99
|
+
when 2
|
100
|
+
@log.debug "Error\n"
|
101
|
+
@errors << n
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def run_all_cases
|
107
|
+
puts "[gettc] Run test cases"
|
108
|
+
|
109
|
+
inputs = Dir.glob "#{@data_d}/*.in"
|
110
|
+
|
111
|
+
@total = inputs.size
|
112
|
+
@elapsed = Array.new
|
113
|
+
@failures = Array.new
|
114
|
+
@errors = Array.new
|
115
|
+
|
116
|
+
@total.times do |n|
|
117
|
+
run_case n
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def print_array label, arr
|
122
|
+
if arr.size > 0
|
123
|
+
print "#{label}: "
|
124
|
+
puts arr.join(", ")
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def summarize
|
129
|
+
puts "[gettc] Summary"
|
130
|
+
puts "#{@total} cases checked, #{@failures.size} failures, #{@errors.size} errors"
|
131
|
+
print_array "Failures", @failures
|
132
|
+
print_array " Errors", @errors
|
133
|
+
|
134
|
+
if @total > 0
|
135
|
+
sum = @elapsed.inject 0, :+
|
136
|
+
avg = sum / @elapsed.size
|
137
|
+
puts " Total time taken: #{sum} ms"
|
138
|
+
puts " Average time taken: #{avg} ms"
|
139
|
+
|
140
|
+
i, j = 0, 0
|
141
|
+
@elapsed.size.times do |k|
|
142
|
+
if @elapsed[k] > j
|
143
|
+
i, j = k, @elapsed[k]
|
144
|
+
end
|
145
|
+
end
|
146
|
+
puts " Slowest running case: #{j} ms (case #{i})"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def print_failures
|
151
|
+
if @failures.empty? || @verbose
|
152
|
+
return
|
153
|
+
end
|
154
|
+
puts "Here are a few failed case for your debugging purposes"
|
155
|
+
|
156
|
+
n = [5, @failures.size].min
|
157
|
+
n.times do |i|
|
158
|
+
j = @failures[i]
|
159
|
+
puts "Case #{j}:"
|
160
|
+
print_case j
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def run
|
165
|
+
compile_checker
|
166
|
+
run_all_cases
|
167
|
+
print_failures
|
168
|
+
summarize
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
runner = GettcRunner.new ARGV[0], ARGV[1], ARGV[2], ARGV[3]
|
173
|
+
runner.run
|
data/dist/template/bin/runner.sh
CHANGED
@@ -5,55 +5,62 @@ mode="$1"
|
|
5
5
|
solver="$2"
|
6
6
|
data_d="$3"
|
7
7
|
output_d="$4"
|
8
|
-
ostream=/dev/null
|
9
8
|
|
10
9
|
command_exists () {
|
11
10
|
type "$1" > /dev/null 2>&1 ;
|
12
11
|
}
|
13
12
|
|
14
13
|
timeit () {
|
15
|
-
if
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
fi
|
24
|
-
elif [ $mode = 'verbose' ]; then
|
25
|
-
if command_exists time ; then
|
26
|
-
time "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
|
27
|
-
return
|
28
|
-
fi
|
14
|
+
if [ $mode = "quiet" ]; then
|
15
|
+
"$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
|
16
|
+
elif command_exists /usr/bin/time ; then
|
17
|
+
/usr/bin/time "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
|
18
|
+
elif command_exists time ; then
|
19
|
+
time "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
|
20
|
+
else
|
21
|
+
"$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
|
29
22
|
fi
|
30
|
-
"$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"
|
31
23
|
}
|
32
24
|
|
33
25
|
puts () {
|
34
|
-
|
26
|
+
if [ $mode = "verbose" ]; then
|
27
|
+
echo "$1"
|
28
|
+
fi
|
35
29
|
}
|
36
30
|
|
37
31
|
write () {
|
38
|
-
|
32
|
+
if [ $mode = "verbose" ]; then
|
33
|
+
echo -n "$1"
|
34
|
+
fi
|
39
35
|
}
|
40
36
|
|
41
37
|
view_file () {
|
42
38
|
filename="$1"
|
43
|
-
write
|
44
|
-
cat "$filename"
|
45
|
-
puts
|
39
|
+
write "<"
|
40
|
+
cat "$filename"
|
41
|
+
puts ">"
|
46
42
|
}
|
47
43
|
|
48
44
|
report_case () {
|
49
|
-
|
45
|
+
if [ $mode = "quiet" ]; then
|
46
|
+
return
|
47
|
+
fi
|
48
|
+
write " Input: "
|
50
49
|
view_file "$data_d/$test_case.in"
|
51
|
-
write
|
50
|
+
write " Expected: "
|
52
51
|
view_file "$data_d/$test_case.out"
|
53
|
-
write
|
52
|
+
write " Received: "
|
54
53
|
view_file "$output_d/$test_case.out"
|
55
54
|
}
|
56
55
|
|
56
|
+
delegate () {
|
57
|
+
if command_exists ruby ; then
|
58
|
+
runner_rb="$(dirname $0)/runner.rb"
|
59
|
+
ruby "$runner_rb" "$mode" "$solver" "$data_d" "$output_d"
|
60
|
+
exit 0
|
61
|
+
fi
|
62
|
+
}
|
63
|
+
|
57
64
|
init () {
|
58
65
|
export TIME="Time: %es - Memory: %MK"
|
59
66
|
export TIMEFORMAT=%3lR
|
@@ -62,13 +69,8 @@ init () {
|
|
62
69
|
mkdir "$output_d"
|
63
70
|
fi
|
64
71
|
|
65
|
-
if [ "$mode" = 'verbose' ]; then
|
66
|
-
ostream=/dev/stdout
|
67
|
-
elif [ "$mode" = 'file' ]; then
|
68
|
-
ostream=log
|
69
|
-
fi
|
70
|
-
|
71
72
|
dir=`dirname $0`
|
73
|
+
echo "[gettc] Compile checker"
|
72
74
|
checker="$dir/../build/check"
|
73
75
|
if [ ! -x "$checker" ]; then
|
74
76
|
undo=`pwd`
|
@@ -79,14 +81,14 @@ init () {
|
|
79
81
|
}
|
80
82
|
|
81
83
|
main () {
|
82
|
-
cases
|
84
|
+
echo "[gettc] Run test cases"
|
83
85
|
|
86
|
+
cases=0
|
84
87
|
fails=0
|
85
|
-
|
86
88
|
errors=0
|
87
|
-
failstr=
|
89
|
+
failstr=""
|
90
|
+
errorstr=""
|
88
91
|
|
89
|
-
errorstr=''
|
90
92
|
for input in "$data_d"/*.in; do
|
91
93
|
if [ -f "$input" ]; then
|
92
94
|
cases=$(( cases + 1 ))
|
@@ -94,37 +96,39 @@ main () {
|
|
94
96
|
test_case=`basename "$input"`
|
95
97
|
test_case=${test_case%.in}
|
96
98
|
|
97
|
-
write "
|
99
|
+
write "Case $test_case ... "
|
98
100
|
timeit "$solver" "$data_d/$test_case.in" "$output_d/$test_case.out"
|
99
|
-
"$checker" "$data_d/$test_case.out" "$output_d/$test_case.out"
|
101
|
+
"$checker" "$data_d/$test_case.out" "$output_d/$test_case.out"
|
100
102
|
retcode=$?
|
101
103
|
|
102
104
|
if [ $retcode -eq 0 ]; then
|
103
|
-
puts
|
105
|
+
puts "Passed"
|
104
106
|
|
105
107
|
elif [ $retcode -eq 1 ]; then
|
106
108
|
fails=$(( fails + 1 ))
|
107
109
|
failstr="$failstr $test_case"
|
108
|
-
puts
|
110
|
+
puts "Failed"
|
109
111
|
report_case "$test_case"
|
110
112
|
|
111
113
|
else
|
112
114
|
errors=$(( errors + 1 ))
|
113
115
|
errorstr="$errorstr $test_case"
|
114
|
-
puts
|
116
|
+
puts "Error"
|
115
117
|
report_case "$test_case"
|
116
118
|
fi
|
117
119
|
fi
|
118
120
|
done
|
119
|
-
|
121
|
+
|
122
|
+
echo "[gettc] Summary"
|
123
|
+
echo "$cases cases checked, $fails failures, $errors errors"
|
120
124
|
if [ $fails -gt 0 ]; then
|
121
|
-
echo "
|
125
|
+
echo "Failures:${failstr}"
|
122
126
|
fi
|
123
127
|
if [ $errors -gt 0 ]; then
|
124
|
-
echo "
|
128
|
+
echo "Errors:${errorstr}"
|
125
129
|
fi
|
126
|
-
|
127
130
|
}
|
128
131
|
|
132
|
+
delegate
|
129
133
|
init
|
130
134
|
main
|
@@ -4,7 +4,7 @@ DATA_D = ../../data
|
|
4
4
|
COMPILER = g++ -std=gnu++0x -I$(GETTC_HOME)/include/cpp
|
5
5
|
RUNNER = sh ../../bin/runner.sh
|
6
6
|
|
7
|
-
run =
|
7
|
+
run = @$(RUNNER) $1 $(OUTPUT_D)/<%= prob.name %>Runner $(DATA_D)/$2 $(OUTPUT_D)/$2
|
8
8
|
|
9
9
|
default : usage
|
10
10
|
|
@@ -12,11 +12,14 @@ usage :
|
|
12
12
|
@cat $(GETTC_HOME)/usage
|
13
13
|
|
14
14
|
setup :
|
15
|
-
if [ ! -d $(OUTPUT_D) ]; then mkdir -p $(OUTPUT_D); fi
|
15
|
+
@if [ ! -d $(OUTPUT_D) ]; then mkdir -p $(OUTPUT_D); fi
|
16
|
+
@echo "[gettc] Compile solver"
|
16
17
|
|
17
|
-
|
18
|
+
$(OUTPUT_D)/<%= prob.name %>Runner: <%= prob.name %>Runner.cpp <%= prob.name %>.cpp
|
18
19
|
$(COMPILER) -o $(OUTPUT_D)/<%= prob.name %>Runner $<
|
19
20
|
|
21
|
+
main: setup $(OUTPUT_D)/<%= prob.name %>Runner
|
22
|
+
|
20
23
|
demo : main
|
21
24
|
$(call run,verbose,demo)
|
22
25
|
|
@@ -27,4 +30,4 @@ sysv : main
|
|
27
30
|
$(call run,verbose,sys)
|
28
31
|
|
29
32
|
clean :
|
30
|
-
rm -rf $(OUTPUT_D)
|
33
|
+
@rm -rf $(OUTPUT_D)
|
@@ -3,7 +3,7 @@ OUTPUT_D =../../build/go
|
|
3
3
|
DATA_D = ../../data
|
4
4
|
RUNNER = sh ../../bin/runner.sh
|
5
5
|
|
6
|
-
run =
|
6
|
+
run = @$(RUNNER) $1 $(OUTPUT_D)/<%= prob.name %>Runner $(DATA_D)/$2 $(OUTPUT_D)/$2
|
7
7
|
|
8
8
|
default : usage
|
9
9
|
|
@@ -11,11 +11,14 @@ usage :
|
|
11
11
|
@cat $(GETTC_HOME)/usage
|
12
12
|
|
13
13
|
setup :
|
14
|
-
if [ ! -d $(OUTPUT_D) ]; then mkdir -p $(OUTPUT_D); fi
|
14
|
+
@if [ ! -d $(OUTPUT_D) ]; then mkdir -p $(OUTPUT_D); fi
|
15
|
+
@echo "[gettc] Compile solver"
|
15
16
|
|
16
|
-
|
17
|
+
$(OUTPUT_D)/<%= prob.name %>Runner: <%= prob.name %>Runner.go <%= prob.name %>/<%= prob.name %>.go
|
17
18
|
export GOPATH="$$GOPATH<%= File::PATH_SEPARATOR %>$(GETTC_HOME)/include/go" && go build -o $(OUTPUT_D)/<%= prob.name %>Runner <%= prob.name %>Runner.go
|
18
19
|
|
20
|
+
main: setup $(OUTPUT_D)/<%= prob.name %>Runner
|
21
|
+
|
19
22
|
demo : main
|
20
23
|
$(call run,verbose,demo)
|
21
24
|
|
@@ -26,4 +29,4 @@ sysv : main
|
|
26
29
|
$(call run,verbose,sys)
|
27
30
|
|
28
31
|
clean :
|
29
|
-
rm -rf $(OUTPUT_D)
|
32
|
+
@rm -rf $(OUTPUT_D)
|
@@ -4,7 +4,7 @@ DATA_D = ../../data
|
|
4
4
|
COMPILER = ghc -i$(GETTC_HOME)/include/haskell -outputdir $(OUTPUT_D)
|
5
5
|
RUNNER = sh ../../bin/runner.sh
|
6
6
|
|
7
|
-
run =
|
7
|
+
run = @$(RUNNER) $1 $(OUTPUT_D)/<%= prob.name %>Runner $(DATA_D)/$2 $(OUTPUT_D)/$2
|
8
8
|
|
9
9
|
default : usage
|
10
10
|
|
@@ -12,11 +12,14 @@ usage :
|
|
12
12
|
@cat $(GETTC_HOME)/usage
|
13
13
|
|
14
14
|
setup :
|
15
|
-
if [ ! -d $(OUTPUT_D) ]; then mkdir -p $(OUTPUT_D); fi
|
15
|
+
@if [ ! -d $(OUTPUT_D) ]; then mkdir -p $(OUTPUT_D); fi
|
16
|
+
@echo "[gettc] Compile solver"
|
16
17
|
|
17
|
-
|
18
|
+
$(OUTPUT_D)/<%= prob.name %>Runner: <%= prob.name %>Runner.hs <%= prob.name %>.hs
|
18
19
|
$(COMPILER) -o $(OUTPUT_D)/<%= prob.name %>Runner $<
|
19
20
|
|
21
|
+
main: setup $(OUTPUT_D)/<%= prob.name %>Runner
|
22
|
+
|
20
23
|
demo : main
|
21
24
|
$(call run,verbose,demo)
|
22
25
|
|
@@ -27,4 +30,4 @@ sysv : main
|
|
27
30
|
$(call run,verbose,sys)
|
28
31
|
|
29
32
|
clean :
|
30
|
-
rm -rf $(OUTPUT_D)
|
33
|
+
@rm -rf $(OUTPUT_D)
|
@@ -3,13 +3,13 @@ OUTPUT_D = ../../build/python
|
|
3
3
|
DATA_D = ../../data
|
4
4
|
RUNNER = sh ../../bin/runner.sh
|
5
5
|
|
6
|
-
run =
|
6
|
+
run = @$(RUNNER) $1 ./<%= prob.name %>Runner.py $(DATA_D)/$2 $(OUTPUT_D)/$2
|
7
7
|
|
8
8
|
default : usage
|
9
9
|
|
10
10
|
setup :
|
11
|
-
if [ ! -d $(OUTPUT_D) ]; then mkdir -p $(OUTPUT_D); fi
|
12
|
-
chmod +x <%= prob.name %>Runner.py
|
11
|
+
@if [ ! -d $(OUTPUT_D) ]; then mkdir -p $(OUTPUT_D); fi
|
12
|
+
@chmod +x <%= prob.name %>Runner.py
|
13
13
|
|
14
14
|
usage :
|
15
15
|
@cat $(GETTC_HOME)/usage
|
@@ -24,4 +24,4 @@ sysv : setup
|
|
24
24
|
$(call run,verbose,sys)
|
25
25
|
|
26
26
|
clean :
|
27
|
-
rm -rf $(OUTPUT_D)
|
27
|
+
@rm -rf $(OUTPUT_D)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gettc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: '1.8'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hpricot
|
@@ -78,9 +78,14 @@ files:
|
|
78
78
|
- dist/include/java/engine.rb
|
79
79
|
- dist/include/python/engine.rb
|
80
80
|
- dist/include/python/topcoder/__init__.py
|
81
|
+
- dist/include/python/topcoder/__pycache__/__init__.cpython-32.pyc
|
82
|
+
- dist/include/python/topcoder/__pycache__/errors.cpython-32.pyc
|
83
|
+
- dist/include/python/topcoder/__pycache__/reader.cpython-32.pyc
|
84
|
+
- dist/include/python/topcoder/__pycache__/writer.cpython-32.pyc
|
81
85
|
- dist/include/python/topcoder/errors.py
|
82
86
|
- dist/include/python/topcoder/reader.py
|
83
87
|
- dist/include/python/topcoder/writer.py
|
88
|
+
- dist/template/bin/runner.rb
|
84
89
|
- dist/template/bin/runner.sh
|
85
90
|
- dist/template/data/demo/{examples_d}
|
86
91
|
- dist/template/data/sys/{systests_d}
|