Mercurial > ~astiob > upreckon > hgweb
comparison 2.00/problem.py @ 16:f2279b7602d3
Initial 2.00 commit
author | Oleg Oshmyan <chortos@inbox.lv> |
---|---|
date | Mon, 07 Jun 2010 23:36:52 +0000 |
parents | |
children | ec6f1a132109 |
comparison
equal
deleted
inserted
replaced
15:c0e925ae721e | 16:f2279b7602d3 |
---|---|
1 #!/usr/bin/python | |
2 # Copyright (c) 2010 Chortos-2 <chortos@inbox.lv> | |
3 | |
4 try: | |
5 import config as _config, testcases as _testcases | |
6 except ImportError as e: | |
7 import __main__ | |
8 __main__.import_error(e) | |
9 | |
10 # LIBRARY and STDIO refer to interactive aka reactive problems | |
11 BATCH, OUTONLY, LIBRARY, STDIO, BESTOUT = xrange(5) | |
12 | |
13 class Problem(object): | |
14 __slots__ = 'name', 'config', 'cache', 'testcases' | |
15 | |
16 def __init__(prob, name): | |
17 if not isinstance(name, basestring): | |
18 # This shouldn't happen, of course | |
19 raise TypeError, "Problem() argument 1 must be string, not " + str(type(name)).split('\'')[1] | |
20 prob.name = name | |
21 prob.config = _config.load_problem(name) | |
22 prob.cache = type('Cache', (object,), {'padoutputtolength': 0})() | |
23 prob.testcases = _testcases.load_problem(prob) | |
24 | |
25 def test(prob): | |
26 real = max = 0 | |
27 for case in prob.testcases: | |
28 r, m = case() | |
29 real += r | |
30 max += m | |
31 return real, max |