diff options
| author | Yuval Adam <yuv.adm@gmail.com> | 2011-04-08 19:33:44 +0300 |
|---|---|---|
| committer | Yuval Adam <yuv.adm@gmail.com> | 2011-04-08 19:33:44 +0300 |
| commit | bd8b40e48c3be4e741b441c958fc601820d28d66 (patch) | |
| tree | a6689ad957eb657c3542293fdfff906cae81e8e0 /2009/qual/c/c.py | |
| parent | bec7d77c22c7bb186dea9fab257d10a7de8b7bc6 (diff) | |
copied template to c
Diffstat (limited to '2009/qual/c/c.py')
| -rw-r--r-- | 2009/qual/c/c.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/2009/qual/c/c.py b/2009/qual/c/c.py new file mode 100644 index 0000000..4bdd857 --- /dev/null +++ b/2009/qual/c/c.py @@ -0,0 +1,56 @@ +class memoized(object): + def __init__(self, func): + self.func = func + self.cache = {} + def __call__(self, *args): + try: + return self.cache[args] + except KeyError: + value = self.func(*args) + self.cache[args] = value + return value + except TypeError: + return self.func(*args) + +@memoized +def countSub(sub, s): + (lsub, ls) = (len(sub), len(s)) + + if lsub == ls: + return 1 if sub == s else 0 + + if lsub > ls: + return 0 + + if lsub == 0: + return 1 + + if ls == 0: + return 0 + + if sub[0] == s[0]: + return isSub(sub[1:], s[1:]) + else: + return isSub(sub, s[1:]) + +f = open('1.in', 'r') +o = open('1.out', 'w') + +t = int(f.readline().strip()) + +WTCJ = 'welcome to code jam' + +for i in xrange(t): + sub = f.readline().strip() + + prefs = [sub[j:] for j in xrange(len(sub))] + print prefs + + r = len(filter(lambda x: isSub(WTCJ, x), prefs)) + + s = "Case #%d: %d" % (i+1, r) + print s + o.write(s) + +f.close() +o.close()
\ No newline at end of file |
