## Python <s>204</s> <s>202</s> 195 Bytes ## from numpy import* def f(A): r,c=A.shape z,s=zeros((r,1)),array([0,2,c+3]) B=hstack((z,A,z)).flat for i in range(1,(r-1)*(c+2)): if B[i]and not any(B[s]):return 1<0 s+=1 return any(B[i:]) Expects `A` to be a 2D numpy array. Takes the matrix, pads zero columns left and right and flattens the matrix. `s` is a stencil that points to the left, right and lower element. The loop checks each element except the last line if it is `1` and at least one of its stencil is `1`, returns `False` otherwise. Afterwards, check if the last line contains any `1`. Two testcases for you: I1 = '001001\n011001\n010111\n110101\n011101\n001011' A1 = array([int(c) for c in I1.replace('\n','')]).reshape(6,6) print f(A1) #True I2 = '001100\n111111\n110101\n010011\n111011' A2 = array([int(c) for c in I2.replace('\n','')]).reshape(5,6) print f(A2) #False Edit1: `1<0` is shorter than `False` Edit2: `flat` is a fine alternative to `flatten()` and using tabulators for the second intendation in the loop