summaryrefslogtreecommitdiff
path: root/2010/1a/a.py
blob: 22b1de44e7266cc9dced39f6e5a39880ffd056c6 (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
57
58
59
f = open('1.in', 'r')
o = open('1.out', 'w')

def cols(m):
    n = len(m)
    return [''.join([m[j][i] for j in range(n)]) for i in range(n)]

def diag(m):
    n = len(m)
    d = [zip(range(i+1) ,range(i+1)[::-1]) for i in range(n)]
    print d
    return [''.join([m[i][j] for (i,j) in diag]) for diag in d]
    
def diag_inv(m):
    n = len(m)
    d = [zip(range(i+1),range(i+1)[::-1]) for i in range(n)]
    return [''.join([m[n-1-i][j] for (i,j) in diag]) for diag in d]

# still need the bottom triangles!!!!! ^^^^^

def rotate(m):
    n = len(m)
    return [''.join([m[j][i] for j in range(n)[::-1]]) for i in range(n)]

def droprow(r):
    return '.' * r.count('.') + r.replace('.','')

def gravity(m):
    return map(droprow, m)

def winrow(r, k):
    res = 0
    if r.find('B'*k) != -1:
        res |= 1
    if r.find('R'*k) != -1:
        res |= 2
    return res

def win(m, k):
    R = ['Neither', 'Blue', 'Red', 'Both']
    win = 0
    for row in m:
        win |= winrow(row, k)
    for col in cols(m):
        win |= winrow(col, k)
    
    return R[win]

t = int(f.readline().strip())

for i in range(t):
    (n, k) = map(int, f.readline().strip().split(' '))
    
    mat = [f.readline().strip() for j in range(n)]
    mat = rotate(gravity(mat))
    
    s = "Case #%d: \n%s\n" % (i+1, win(1))
    print s
    o.write(s)