summaryrefslogtreecommitdiff
path: root/2009/qual/c/c.py
diff options
context:
space:
mode:
Diffstat (limited to '2009/qual/c/c.py')
-rw-r--r--2009/qual/c/c.py56
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