Skip to content

Commit dffa27f

Browse files
committed
Connected Cells
1 parent 093bbd0 commit dffa27f

File tree

1 file changed

+127
-0
lines changed
  • Search/Connected Cell in a Grid

1 file changed

+127
-0
lines changed
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
## Solution for HackerRank Algorithms/Search/Connected Cell In A Grid
2+
## https://www.hackerrank.com/challenges/connected-cell-in-a-grid
3+
__author__ = 'modi95'
4+
__date__ = 'Monday 1 June 2015'
5+
6+
from sys import stdin
7+
8+
rows = 0
9+
cols = 0
10+
matrix = []
11+
curr = '2'
12+
13+
set_sizes = {}
14+
15+
def merge_around(y, x):
16+
17+
##3
18+
if (x != cols-1):
19+
if (matrix[y][x+1] == '1'):
20+
matrix[y][x+1] = matrix[y][x]
21+
set_sizes[matrix[y][x]] += 1
22+
merge_around(y, x+1)
23+
24+
##4:30
25+
if ((x != cols-1) and (y != rows-1)):
26+
if (matrix[y+1][x+1] == '1'):
27+
matrix[y+1][x+1] = matrix[y][x]
28+
set_sizes[matrix[y][x]] += 1
29+
merge_around(y+1, x+1)
30+
31+
32+
##6
33+
if (y != rows-1):
34+
if (matrix[y+1][x] == '1'):
35+
matrix[y+1][x] = matrix[y][x]
36+
set_sizes[matrix[y][x]] += 1
37+
merge_around(y+1, x)
38+
39+
##7:30
40+
if ((y != rows-1) and (x != 0)):
41+
if (matrix[y+1][x-1] == '1'):
42+
matrix[y+1][x-1] = matrix[y][x]
43+
set_sizes[matrix[y][x]] += 1
44+
merge_around(y+1, x-1)
45+
46+
##9
47+
if (x != 0):
48+
if (matrix[y][x-1] == '1'):
49+
matrix[y][x-1] = matrix[y][x]
50+
set_sizes[matrix[y][x]] += 1
51+
merge_around(y, x-1)
52+
53+
##10:30
54+
if ((x != 0) and (y != 0)):
55+
if (matrix[y-1][x-1] == '1'):
56+
matrix[y-1][x-1] = matrix[y][x]
57+
set_sizes[matrix[y][x]] += 1
58+
merge_around(y-1, x-1)
59+
60+
##12
61+
if (y != 0):
62+
if (matrix[y-1][x] == '1'):
63+
matrix[y-1][x] = matrix[y][x]
64+
set_sizes[matrix[y][x]] += 1
65+
merge_around(y-1, x)
66+
67+
##1:30
68+
if ((y != 0) and (x != cols-1)):
69+
if (matrix[y-1][x+1] == '1'):
70+
matrix[y-1][x+1] = matrix[y][x]
71+
set_sizes[matrix[y][x]] += 1
72+
merge_around(y-1, x+1)
73+
74+
return
75+
76+
77+
78+
def output_soln():
79+
#for row in matrix:
80+
#print row
81+
82+
max = 0
83+
for set in set_sizes:
84+
max = set_sizes[set] if (set_sizes[set] > max) else max
85+
86+
print max
87+
return
88+
89+
#returns list of lines containing orders
90+
def get_inputs():
91+
global rows
92+
global cols
93+
global matrix
94+
95+
line1 = stdin.readline()
96+
rows = int(line1)
97+
98+
line2 = stdin.readline()
99+
cols = int(line2)
100+
101+
for i in range (0, rows):
102+
line = stdin.readline()
103+
line = line.replace(' ', '')
104+
line = line.replace('\n', '')
105+
matrix.append(list(line))
106+
107+
return
108+
109+
110+
def main():
111+
get_inputs()
112+
global curr
113+
114+
for y in range(0, rows):
115+
for x in range (0, cols):
116+
if (matrix[y][x] == '1'):
117+
matrix[y][x] = curr
118+
set_sizes[curr] = 1
119+
curr = chr(ord(curr) + 1)
120+
merge_around(y, x)
121+
122+
output_soln()
123+
124+
return
125+
126+
if __name__ == "__main__":
127+
main()

0 commit comments

Comments
 (0)