|
|
@@ -0,0 +1,31 @@ |
|
|
|
require 'timeout' |
|
|
|
|
|
|
|
module KGrader |
|
|
|
module Runtime |
|
|
|
MAX_COLS = 79 |
|
|
|
|
|
|
|
def testcase(options) |
|
|
|
puts " running test: #{$0} ".center MAX_COLS, '=' |
|
|
|
begin |
|
|
|
Timeout::timeout options[:alarm] { yield } |
|
|
|
rescue Timeout::Error |
|
|
|
comment "timeout" |
|
|
|
grade 0 |
|
|
|
end |
|
|
|
puts " done ".center MAX_COLS, '-' |
|
|
|
end |
|
|
|
|
|
|
|
def grade(score) |
|
|
|
IO.new(3).write score |
|
|
|
exit |
|
|
|
end |
|
|
|
|
|
|
|
def comment(text) |
|
|
|
IO.new(4).write text + "\n" |
|
|
|
end |
|
|
|
|
|
|
|
def shake |
|
|
|
ARGV[0] |
|
|
|
end |
|
|
|
end |
|
|
|
end |