summaryrefslogtreecommitdiff
path: root/2009/qual/c/c.py
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()