From bd8b40e48c3be4e741b441c958fc601820d28d66 Mon Sep 17 00:00:00 2001 From: Yuval Adam Date: Fri, 8 Apr 2011 19:33:44 +0300 Subject: copied template to c --- 2009/qual/c/c.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 2009/qual/c/c.py (limited to '2009/qual/c/c.py') 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 -- cgit v1.3.1