Question:
Find the biggest black square from an N*N matrix of squares. 1 means it’s black, 0 means it’s white. Output should be the list of squares which forms the largest black square.
Input : ‘{0#1#1#1#0#1#0#1,1#0#1#0#0#0#0#1,0#0#0#1#0#1#0#0,1#1#1#1#1#0#0#1,1#1#1#1#0#1#1#1,1#1#1#1#0#1#1#1,1#1#1#1#1#1#1#1,1#1#0#1#0#0#1#1}’
Output : {(3#0,3#1,3#2,3#3),(4#0,4#1,4#2,4#3),(5#0,5#1,5#2,5#3),(6#0,6#1,6#2,6#3)}
Solution(Python):
# Author : Sreejith Sreekantan
# Description :
# Find the biggest black square from an N*N matrix of squares. 1 means it's black, 0 means it's white
# Input : '{0#1#1#1#0#1#0#1,1#0#1#0#0#0#0#1,0#0#0#1#0#1#0#0,1#1#1#1#1#0#0#1,1#1#1#1#0#1#1#1,1#1#1#1#0#1#1#1,1#1#1#1#1#1#1#1,1#1#0#1#0#0#1#1}'
# Output : {(3#0,3#1,3#2,3#3),(4#0,4#1,4#2,4#3),(5#0,5#1,5#2,5#3),(6#0,6#1,6#2,6#3)}
#!/usr/bin/python
def largestSquareAt(sq, i, j, k=1):
if not ( i+k<len(sq) and="" j+k<len(sq[i])="" ):="" ="" ="" return="" 0="" for="" x="" in="" range(0,k):="" if="" sq[i+x][j+k-1]="='0':" y="" sq[i+k-1][j+y]="='0':" 1="" +="" largestsquareat(sq,="" i,="" j,="" k+1) ="" ="" def="" biggestsquare(input1):="" len(input1)="=0" or="" not="" (="" input1.count('{')="=input1.count('}')" )="" :="" ''="" i="str(input1)" j="i" for="" j]="" resx="-1" rexy="-1" ressize="-1" res="[]" range(0,len(j)):="" res.append([])="" range(0,len(j[x])):="" res[x].append(largestsquareat(j,="" x,="" y))="" ressize<res[x][y]:="" resy="y" resstring="" ressize="">0:
resstring = "{"
for x in range(resx,resx+ressize):
if x>resx:
resstring += ","
resstring += "("
for y in range(resy,resy+ressize):
if y>resy:
resstring += ","
resstring += (str(x)+"#"+str(y))
resstring += ")"
resstring += "}"
return resstring
input = '{0#1#1#0,0#1#1#1,0#1#1#1,1#1#1#1}'
input1 = '{0#1#1#1#0#1#0#1,1#0#1#0#0#0#0#1,0#0#0#1#0#1#0#0,1#1#1#1#1#0#0#1,1#1#1#1#0#1#1#1,1#1#1#1#0#1#1#1,1#1#1#1#1#1#1#1,1#1#0#1#0#0#1#1}'
input2 = '{0#1#1#1#0#1#0#1,1#0#1#0#0#0#0#1,0#0#0#1#0#1#0#0,1#1#1#1#1#0#0#1,1#1#0#1#0#1#1#1,1#1#1#1#0#1#1#1,1#1#1#1#1#1#1#1,1#1#0#1#0#0#1#1}'
input3= '{0#1#1#1#0#1#0#1,1#0#1#0#0#0#0#1,0#0#0#1#0#1#0#0,1#1#1#1#1#0#0#1,0#1#0#1#0#1#1#1,1#1#1#1#0#1#1#1,1#1#1#1#1#1#1#1,1#1#0#1#0#0#1#1}'
input4 = '{0#0#0#0,0#0#0#0,0#0#0#0,0#0#0#0}'
print biggestSquare('')
print biggestSquare(input1)
print biggestSquare(input2)
print biggestSquare(input3)
print biggestSquare(input4)