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)
|