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 |
