blob: 4bdd857e6c653cb33c76f97177e6b55cc7b16d3b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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()
|