Last active
March 16, 2019 17:48
-
-
Save jar-o/f4dc781f7b25d82271ce6d469b4f6d18 to your computer and use it in GitHub Desktop.
Maximal square solution in Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
###### For submission to https://leetcode.com/problems/maximal-square/ | |
class Solution(object): | |
def maximalSquare(self, matrix): | |
# handle 0 and 1 dimensional arrays | |
if len(matrix) == 0: return 0 | |
if len(matrix) == 1: | |
for i in range(len(matrix[0])): | |
if matrix[0][i] == '1': return 1 | |
return 0 | |
# input array is not guaranteed to be square. use the smallest side for | |
# largest possible square | |
max_side = len(matrix) | |
if max_side > len(matrix[0]): max_side = len(matrix[0]) | |
# look for largest possible square to smallest | |
for side in reversed(range(0, max_side)): | |
for j in range(len(matrix) - side): | |
for k in range(len(matrix[j]) - side): | |
#print '(' + str(j) + ', ' + str(k) + ') side: ' + str(side + 1) | |
if self.find_square(matrix, j, k, side + 1): | |
return (side + 1)**2 | |
return 0 | |
# check a region in the vector for the existence of a square made of '1' | |
def find_square(self, matrix, x, y, side): | |
if len(matrix) < 2: return False | |
if x + side > len(matrix) or y + side > len(matrix[0]): return False | |
for i in range(x, x + side): | |
for j in range(y, y + side): | |
if matrix[i][j] == '0': return False | |
return True | |
###### Run it: | |
import time | |
# 3x3 | |
test = [ | |
"10100", | |
"10101", | |
"11101", | |
"11100", | |
"11110" | |
] | |
# 2x2 | |
test2 = [ | |
"10100", | |
"10111", | |
"11111", | |
"10010", | |
"10100" | |
] | |
# stupid nonsense start cases... | |
test3 = ["1"] | |
test4 = ["0"] | |
test5 = ["01", "10"] | |
test6 = [ | |
"1111", | |
"1111", | |
"1111" | |
] | |
test7 = ["10001000001111110111111010111100111101001111001011111111101110110110011101101001110011101111001010110100110110111110101111011111110101111111111111111111111101110111111111000111100111111111011010111011", | |
"11010111100111111111111011110111111011101111111010101100110001100110101111101101111111010011111011111110111001110111010111111111011111110110011010111110101110111010101101101101110111111101111110100110", | |
"11010001100111011011111111111110111111010011011011111011111111110111111110111101111011111101101100111111001111101010111111011101110111011111001111111111111111101111110111111111111010101011111011111111", | |
"11111111011111110010110111001111111111111101111111111110100101111101110110001111100110101101111100111111110111001010110100011111111001010011100101011011011111111111110111111101001101110001110111110111", | |
"11011000010101101111011101011101101100111111101111111111111001010011011110110111110111111011100000001111111100011011101110110000000110001111111111111110111011011100000111111111110001111100111111111111", | |
"11111001101111101111111100111101111111111001011101111111111011111011110111111011110101111111111111111111010111111111111011111110110101111111111001110011010101111011111111111111011011100110111111101111", | |
"00111111011011111111100111110111011111111101101011111011110111100111111111111111111001111110000111111011011010111101110111111101111010111011011111110111101101110011111011111111110101111111011110011111", | |
"00101110111111011111110110001110111101111111111001111010010101101111010011101111111011011110110111001011001111100101110111111101000111101110111101111111100110011100111011111111011111110111111111110111", | |
"11111111011011011101111110111011110111011111111001101111111111011010111101110111111111111111111001000110111111001011011111010110111111101101100111110011110111111111011101110101111110101111111101101111", | |
"11101100010111111101111111101110110110111111101111111101111111110111001111000111110110111101111111011110111101101111101111101111010111011111011111101011101111110111111111111111110011111110111110111001", | |
"11110111111111001111111101011011101101111111100111111011111101011111111010110011111111111111111011010111111110111101110101111111011111111010011101111101011111110111100001110100111111110111011000011010", | |
"11111111101011110010101111101000111111011111101001010111111111110111010110101111101111111111111100101111111111011001101110101011001111111110011111111001111011111111011100111011111111111001110111010111", | |
"11111100101110111011110111111101111011111100111011011011111011111011111101000101101101111011111011101111011010100110011110011110011101101101110111111101101111110111110111110101111111100111111111111011", | |
"10111111011011000111111101111110001111111110111111111111111111111100111111110111011101111101101011011110010111111111111111101111101011111110111011011011111111111010001110111111110001111111111111111011", | |
"01001110100111011111001011011111111111100111110101111111111011110101111111011010110101111111110101010110011011111011100011111011111001101101011111101111011110111011101001101111111101100111111111111111", | |
"10111011111011011110111010111101111111011111111110111010011110111011111111111111111111111011111110111011110111111110110111110111011111101111111101011010001100100011101011101111111111111100110111110111", | |
"10111000101111111111111111110011010100110010101111101001111111110111111101111101100001110111111111111011110111111011111111110111111111111110111011100111110111111101111111111111111011111111011111111111", | |
"10101111111100111011111110111100111010111111110111010110111111111010001110101110111110101111111110111101011111110011000111111111111111111011101101111011011111111011111111101110111101101111111111101111", | |
"11111111111111001111111011011111111011000111111100000111101110101110011011111111110110111110101111110011111101110111111101111111110010111011111111101111110111111010011110111011111111111111111111100111", | |
"11100101111111111111110111111110111111111101101010111111011101011011111111101001111011111001100111111101011111111101111111011110111100111011111101011101111111111001010101010111111111111101111111111111", | |
"11100001111010011111110011001111011011110011110111101110101111111111011011110101111101101011011010111111111111111111111000111111110111011100111100111111101101101011111101110111111011100110110101011110", | |
"11011110110111110011011101001111111111101111000101111011111011010111111011111011111011111011111111111011110010111111111111111101111111100111111111101111111111111110111101111101011001110001010111110110", | |
"11111110110111111111110101101001111111111101110111100110110110101111110100111011101111111101111001111111110111111001111011111111101101111101111111100001110011111011011011111111111010001101110111111011", | |
"10111110111111110111111110111111111110111111011010111000011101011111111101101101111111101111111111101011111111110111111110101111111111111101111011110111111011111111110110111111011011111110110110110111", | |
"10111111001111111011110011011110101111111111111011111111111110001111111011101101111111101011001111100111111111111111111111111111101101010111111100011101011111111111010011111111011111111011111110111110", | |
"11101011111110111011111111111110110111111101111111111011111001111111111101011111111110011111011101010101111110001111111111101111011111101111110101010110010101111111101111111110111101101111000111111001", | |
"11111011101111101001000111011011111010101011111111111111011111110111111111011111111100001101101111111111111111111111101111111111100110111111111111011111111011101111111110111110111101111011101011110110", | |
"11111111101110110011011111110111010111111111110111111010111101101110101011111101110011001000110101011101111111010011111111111111011111111011110111111111011110111111010111011111101111110111011111111011", | |
"11010111110011110011111101011101111111011011111111111110011111110101101101111100110111111011010010010111001101111101111111011011011011110001111111110111110101101101101111111111011111101011111111111111", | |
"11001111100111111101011111000011111111111110111101010111011111101000111111101111110101111111011111111111111111101111111010101111110101110011111101010010011111100110001000111110001111101011111110010110", | |
"11111111111011011101011101001101011110111010111111111100000011111011110110110111111011101100111111111101110001110110011111111111111111110111111111111001111011111011111111001111011101111111110110011011", | |
"11011101111111111111111111101111111111100101111111111101111111110001101111110111110100101011111111111010111101101111111111011101111001111111111001110111110101110101111100111101110111111011111111111110", | |
"11111111111011111111101111110111111101010111111110000101011001110111111111111111111000111111100111111101101111111011011101111110111100110011101100101011100111111110111111011111111111001111101111111011", | |
"11111101111011110111111111001111100001111111010011111101100101111001110111111111111111110111110110110101111110111010010001101111101111111100110111111111000101111011011110111111111110111110111001101111", | |
"11001111011110111011011011000111110111110001111111110101101111111011110101110111111111111111111111000011111110111111111001111011101101111000101000111110111011101111111111111111110101011111101111111011", | |
"10111101001111011101111111011111110111101111110100111011111101111111101010111111111110111111100111111111110111101111110111111101111111000001111111110111010100111110010010111011111111111101111011011011", | |
"01111100001110111101111111110010111110110111011111111001111111011010011001111011111011010111011110111110011111111001101111111111111111110111111110100010011011111010101111111001111011110110011011111101", | |
"10110001111111101111111110101111001011111111111110011010110101111111111111011011011101101111101110101110110011111011101111111111111011001100111101100111101101010111111111111101011111011011111111001110", | |
"11111101110011111111011111111111111011111111011111111111111011111110001111111111111101111111110111111101101111011110111111111101011111111101011010110111111111111111011110100011111101011100111111111111", | |
"11111110111111110111011011111111111111111001111111111101111000111001011111101010110111111011010010111010111011001011010111111110011110100101111111111111111011111101101100111111000111011111010111110111", | |
"11111110111111101011001001101111111110101101011111111111111101111110100010111110101111111111110101111110111111000011111111001111111000010101111101111111011111110111110110100110111011001111111111111111", | |
"10111101111111100011100101111011110110001110100101111111001111111111111111101101011110110001111110111001110010111011011011101010011111111101010111010111101110111111101111111011101111111111110111111110", | |
"11101001011111111111001111111011111001101111011111011001110111011101011011111111111010111111111111111010100101011011111111111100101100011001101111111110111011100100100010101011110101110111111111111111", | |
"11111111111111010111111111011111010111010000101010110101110111111110111111110111110111111000111011011111101110110111110110111110111101110111111111111110111111011110111110000111110010110011111100111011", | |
"01111011111111101111111110110001011111011110101001111011011111111011110111111111101100101011101110111101111111011101111111001111111010111100111101010110110011111111111011110100101010011100111111111011", | |
"11111111111111111111110111011111110111101110111101001111110101111101101111111111111111111111011111001011111010001110011110111011111111111111011111111001110111111010111110111101011110101111110111110111", | |
"10011111110111101111111111111001001100101011111111111011101111101111111101111111010111001111011111011110101111011111111010111111011110111011110110101111100011101111110001111111111111111111111110010011", | |
"11100011111111111111010000111111010011111000101111111111101110111111100100111111110001110111011101111111101111011111111101110011101110001111111011111111111111011111110111110101111110111011110001111111", | |
"01100110001110010111111111111111110101111110111100111111110110101111110011111111110101111111111111111101110111011011101011110011101011101111111111011111000011111111111111111111111111111101111110111111", | |
"11111111111101110110011100111111111100101111011110110110111111111111101100111010110111101110101010110011111111111101011111101101111111101010110010111110101011111110011111111111101111101110011101101111", | |
"10101111111110101111111111110111111111011111110111110111011111011111110111111110011010111110001110111111111101011101111001111111111111111111011001111111011011111100110111111111111110111100111111111111", | |
"10101110011101111111101110001101111101111101110111011101101011110110111001110110011111001111111011100100111001001111111110111001111101000110001110101111101101111011111111111011011001111011111010111111", | |
"11111111111111101111010110011101111011111111111011010010011111001101010110011001100101100111011111011001101111101111111101000111110111011111101101111101101011101111110001111001100110010101011110111111", | |
"01111101101001111101111111111111111111110100111011010111011111111101111101111111011000111111111111110110111111110111111010111111111110111101101111101111111101011111101101111100111111011110111111101111", | |
"11001010011101111011111111111110011111110001101111110011110111111110111000010100111111111111011101111011011111111000111111111010101111011111110010001110111111011110111110001011111111110111011111010101", | |
"10111111100110111111101111110111111111011101000111101110101111101110111100100011101011101011111101100110110111111111101100111111110011011011010110110110110011011011110111011011001011110111111011111101", | |
"10110110111011111101111011111111111111110111110010101000111101110111111111101111111111100010111111111101111111111111111111101111101111011110011111111111101010110101101110011111111110001100101101011111", | |
"11010111010111111111110101111100101110111101011100011011011111111100011111110000111110111101010101101111111111011110011111011111111111111111011101011101101001101111111110101011110010111111011111111011", | |
"11111111111011111101111111101111100111010101111101011111111110110111011101111111111001110011011011110010110111111111110011110111100011001011101011111101110101101000110111111011111110110111011111111101", | |
"11101010111111101101111010110011111111111111011001100101101101110110111001111111011111011101110011011111111111111001101111111111101110111111111111111110101111011101111110011110111111101111101111011111", | |
"11000101100111111100101111001111111010111111101111111101111111110111111111001111111111100111010110111110111011010011111111110101111001111101011000111111011011110110110110011111111111111111100111101111", | |
"11111111111111111111111111110111111011001111110000110111110111111110111011101011011011111101011100110011111110111011100110111111011111110111101101111011111111111111101110110111001100010101011110011111", | |
"11111001011101101111111111001110111111011111111001011111111110101110111001111011111101111110100111111111000101111111110101111111111110010000111001101111111000111101111111111111011111101001011111101100", | |
"11110110111011011101111011011011011011011110011111111111111111011110111111111111111111101111111110111110011111111111111110011110111101001111011101100111111010101101111101100110111111111111101111110100", | |
"11111111111101111010011101001111011101100111011111101111111000101111111010011111111110110101110111011110111110111001110010011111111001011101011100101111111111110110111010101111111110111111001111111111", | |
"11111101111110111111111111011110111101011101111010111111111100111111110111001111111111101011011110111111111001111110110101001110111011101001111011011011111111110111011111110111011101111100111111111111", | |
"11111111011011111111111110101101011011111111011110111011111011101101111101001110110011100101111111111111111101111110010010101110111111011101110110111010010100111101001111110011011011010101111111101111", | |
"11011111101111111111111111111110111101111111001011111111001101111111111100110111110001101011110110111101100111011011101111100110100110010011111111011001111111111011011011111000111111111011111110111011", | |
"11111111101111110111111111001111111110101111110100111100100011101111111100111111101011001101000111100010001111101101011111110101111111011100010111111110111111110111110101110001110010011111111101011111", | |
"11111111111101111111011111101011011111011111110110111011111111111011111111101010011111101111001101011110011100101110110111111111011111111110111110111110011111011111110001101111111011110110100111111101", | |
"11011101011111101101101110011011100010111100101111111010101101111111100111111110011111111001100111111101011111110011111101111110011111111111110111101111110111111111100001101111111111011110011111011111", | |
"10111111011111000111101111101111111001001111111110111111100011111011011111001110010111111111011111110001110111111110111100101110101101001011111011111111111110111111011111001111011101011111111011111110", | |
"01111011111111110110011111110011111011001111111101101001111111111111111111010111111111101111111101010111011101111110111111111011010011111011111101101110111011111111010110010110101100111110111111111111", | |
"01111111111110111110111111001111111111101111111110101111110000111001111011111111111101111111001101000111111011111111110101000110110111010101111011111111101101111111011111110010111111101111101111110101", | |
"10000101110111101111111001001111111111100111111100111111011000111101111101111011011110111100111001110011111011111011101110111111101110101111111111111101011110110111011111110101111111011111100111111111", | |
"10111111001111111101110111110011111110010101111010111111110101111010011101111111111111000110100111111011101110111011111111011100111011101111100111100111111111101101101101110011111110101011101111001100", | |
"10110101111110111111110011111011011111111111111111011010101110001101111011000111110111111101111101111011011011111111010110101101010010100101111011110101110100001001111101101000111001111011011010111111", | |
"11111101111111111011101001111111111000110111010111101111101011110111011010101111111111111101111111111011111101010100111101111111101111010111011001011101110111111110111111110100101111111101111110011111", | |
"11001011011011111111001111111011111110110001110011101111111110111101111111111111101111101111111111111010111111011110110111111111111111111111110101110111111101011110111111111110111101100010101110111011", | |
"11110011111100000111010111011110000011011111111111011000101011111110011011111111111111111111010001010111110010111111111111110111101111001101010101111111111110110111011101101111111011100111111111111111", | |
"01111111111001011101000111111011100111111111111101101111110111111100101111101101011111111101011111101010101111111111101001001110000101110111000111111111101011011101011010111111111111101100111111111111", | |
"11011111111101011110011111110111111111010111011111111001110011111101111111111111111001001011100000011001111011111111010111011111111111111111100111111110001111111110111111101111111111111100111011111111", | |
"01100011111100001111001101111101011011110100110111011111111111011111100111101111111011111101111011101111001111111111111011111111001110111001111010011111011111000111111011111111101011111001111101110100", | |
"11111111111111101111111001001000111011111111001111111111101011011011011001101111111011111011111110111111101111010100111011111100111101111111111111101101011101101111111111111111011111111111001111101110", | |
"11111010111100111111101011011101111010101111111111111111001111111111111100111010101011111101111110111111110011001110111111111011110111111111011111101011111011101111101111110111101110110111111110110011", | |
"01000111100101101111110101001111110101111101111110110110111000111101111111101001111101111111111111111101111111111011111010101011111011111111111111101111100111011111011010101111111101111110011111111111", | |
"11111011111110111111101110101111111011010111111011101011111011101110111101010011011101011110011111110111011110110100101110110011111101111111111111111101011010111011111111111101110101110111101101001110", | |
"01111111011100101111101110111111111010010110111110110111111110110011111111100111111111101111111111111101111111110011111110111110001111110000111110011110101010011100111111110111110101111011011111111100", | |
"11101011110111011111111110111111111011110110111111011111101111111011101111110011111111100011111111101111000101011111111111011111111111011001101011110001111011111101101001111111010011111010111001111011", | |
"11111111111100011111101111111111101110110110011101111111111011011111101111110111101111110111111011111111001001111110011011111011111011111111001110101000111111101000110101101111111011011101100100111111", | |
"10110001111111111110111111101111111011111111111111101111111110100101011101011111011011110101111111111110111111111011111001101101111001001111111100011111101111101101111111011111111111110001111111011101", | |
"00111011111111110101011111011010111110101110111111001111010011111011000111111111011101110011110111111111110101111111010001111111001110011111011101111111100110110100001111011111101111111101101111111011", | |
"10011011011111100111111111001001001111010111011111011111111111111110011111111101001010101111111111111111101111111111110001111010111110110101111110101101101100111111110111111100111011111111011101011101", | |
"11111111011100010111111110110111011000101111110111101011111100111111111111111111101111101111111111000111111111111111010101011110010011111011011111110100100101101100111110111110001011011011110110011111", | |
"11111111111111110101001111101001111111111111111111011100110010100011101111110011111101111111101100010101111111111011111111101111111111111111111111111011111111111010101011001101111111110101011011111011", | |
"11110111010101101111111011111011110110111100110111111110110111110101111111111111011110111111111110111110101111110101010111110010011110101111011010111111111111111101111111110111111010101111111011001111", | |
"01101001111111100001110110100010111010101111011011010011111011001100111111100111011111111011111111101110101011111111111111011111011111111010111011011111011101100111011111011111111111010101111111010111", | |
"11111110101111100011111111110111110110101111111111110111101111111101110111111101110111110011110110101111111101111111101101111110110010101111111111111001111111111111110111111110011101010101111100111111", | |
"01011111011011011011110111111111011101101110010110111111101110001111111010111011010101001111111111101000001111111100100111111001111111111111011110010011111111111101110111111111101101111111001101110101", | |
"11110111100011111111101110111111101111111111111111101111001101111101111111101111110111111101110110101111111100111111100110111111110111101111111111111110111011011101111111101110101111111110011111011111", | |
"00110111111111100101111111111101111111111110111010111111011101111111011110111111111111110100001111111111111011111101110111101111100111011111111101110110111110110110111101111101011111110110111101111110", | |
"11111111110011010111111110111110111110111111111101011111110111011111100111000110110101010011111101001011111111001011111111101011111101111011111111111011101001111111111111111100111110111111011110111010", | |
"11110111111010111101111101010111111101110111101111101011001011101101111101111101111100100001111111011011111111111111111111011111011111001101111111111101101111110111111111110101111111011011110111111111", | |
"11111111111101011011110110111101111111111111110111001011100100111111111011101101001101001011111110110111011001111111111110100111111110011111110001111111101111011111110111111110101011111101111011111101", | |
"01001111111001111111101111101111111101111111111111101111110101111110011111110111011100111111010111111100011111111111111111111011110101101011111110110111111010111011011101111011111011110111110011111011", | |
"00011100100011111111111110101110111110111111110111111111011001110010001110011011110110111011111101101111001111110111110111111101111111111111111111111111111101111001110111101110101010001111111110111111", | |
"11011111100110111101111111111111111010000011111111011111101110111101111011111111011010111111110101101001111111111111011111000010110111111101111101001011011011111011010111011111011110111111111111001110", | |
"11101111111111101111010110111111010111011010101111111110111011011000101110110111111111110111110110110110111111011111010111111001010111100011111110011111011111111100111111011101110110111101111011010011", | |
"11011000110010100111001111111010111011010010000011111111111101111010111110100101111111001111111110111111111110001011110011111110101111110111111011000010111011011111011101111111111110110111110001111001", | |
"01110111011111011111101010110110111100111111101111111010011111111011111011101110111111111111100101111111111111111000011101001001111111110011111011011111011111001011010011111111111101111111111110111101", | |
"11110111110111001111111111111100101100111111111011111101010110110011010111111110101111111111111111111110011111101110011101111111100011011011111111101011000111011011111011001111010110111011111111001110", | |
"11111100111111010111111111111110111111110101110111011011111101110111011001111101101011111101111111111111111101111111010101111111110100011111110111011011111111110111111011111110010111111111110111001111", | |
"11111001101111111111011111111111111111101111011111110111101111111010010101101100011001111011101011111110110110101111100111111011111111100110101111110011111111111111010001011111110110011111110111101010", | |
"11111010111111111111111111100101010011010101111111101110011011010001101111110101011111111111110010110101110000111010111101001000001111011010011111111001001101111110111111111110001101101111101101110111", | |
"01011111111100110111010011110110101011111101110110111011110110100001111111111111110011110111001001111001111010111110110111111111111111110111111101110111111111111101011011100010111011110010111111011110", | |
"01011111111111111111011111111011111101111011111111001010101011111011110111011111111011010110111111111111101111110011011110111111110101111100011011010111111111111111111111111111111101010111110101111001", | |
"11101011100010010110011011111111111111111101101111111111011101110110111111111011000111110111110111111111101110111111110111001011101011101110111101011111111111010111111110111111011110011111111101001111", | |
"11111011101111101100011111001111111011111011111110111010111111110111011111111101111011111110011011111101010010011101101110111111111111111101101111111111111111111111111111011111011111111110110111111111", | |
"10111111101111110111011111111111111111101111111110111111111010111111100011011100011110011111111111111110110110011110111101110011101011110111110111111111111110100101011111111110011111110111111101011111", | |
"11110010111011111011101111110111101100111110111111111111001011111111011111110111111111111011111111111110101101111011110011011111111100110110111111011111110111111111101111111111110101111101111011111111", | |
"11111111101111111111010111101011111111011111010111111110110110001011111111111100011001011001000101101110111111110110111111111111111011011110101110111111110111111110111111111111111111111011110001111111", | |
"10111011111010110111011110101111101111111111111101111111101011011111101011111111110101111111111011111110110110111111111110111011111011011010100111111101111111011110110111111111100111011111011110111111", | |
"01010111111111111110111111111011111101101110111101110001110011011110110101110010111111001100111101111101110111110111000110101111110110011111110111111100111111110111111111000110111111011111111111101110", | |
"11010110101010111101110010001111111111101101111011110111111110111111101001111011101111111001011110111110011111111000011111011111011101101110111111011111110111001111011101011111111111111100001101101001", | |
"11011101110101101111111101111100111011110100111111011110111111110011111111111011111111010111110111010111111101111110111110111110110111011111110111111100100011011011111111110111110110110101101101111101", | |
"11011111111111111110111111110111110110011111110101101101101110001011011110011011111111111111011110110111111110111111111111111110111111111111111111101111111111110101011000101101101111010111111001101001", | |
"11011111111111111101111111110111111111001101101010101111111111100111111110101101110110111110110111111101110111111100100111001001110111111111011111001111011110111111101110111111111110111010011101110111", | |
"11110010111111011111011001101111100110111100101111111111010111011100111011011111110000011011111101111110111110111011110111010111111111111110111111111111111001111011010110110111111111110110111111011011", | |
"01110101111010110111011111111011110110111110010011110111110111111111111110001110101110001011111110110111111111111100110111101111111111101111011100011111111111011010110101011011100101111111111110111001", | |
"11111111110111110111001101111110111111010111000111111110111011111111001011111111111111100111111111111111110101111101011000101011101111010001001111101111111011111111010011011110110110011110101110111110", | |
"11111010111111011111111011101110111101110111110101110011101101111001111101110100011101011111111111101011111111011110011100110111010101110111111010011101111110111111111100111001101111111100011001110101", | |
"11111111111101011011111110001011110111101111110011101111111101011010010110111101011111101111111111101011001011101111011111101101101100011110010111111111111111101111111101111010111111111111001111110111", | |
"11101111110100011111101111111111101101111111101110111111110111000111101101011110101010100111111111101111011111111101111111110111111111110111011111111111111110111110010011110110101110101110110111110111", | |
"01111111011111111111111110111111110111110010111110111111101110011110101001011101101111111111110001011111011011111001111111100101100011010101110100111111001011111111110111011011110101011100111111100011", | |
"11111010111111010110001111111110011011001111111110010101111110000101110001111010011011010111110100111111111110111111111101011011110111011111111010111101001101110111110111111100111111011110110111011111", | |
"00111110011111101001111101111101111011011101011111111111111111111110111111110011111111111111011111001111110111111010111111110111111111101110111111001110101110111110111111010111101111001100111101011110", | |
"01110111110010111010110110111111101111111111111111111101111111110101111011011101110100111111111110111111111110011111110111011101111001010111101101101111111111111111010011111101111101110011010111111101", | |
"01111111111111111111010111111111110011111101111111111100011101111011110110111011001111111111111000111101111111011110100111111111111011111111111001111101111011111111111110111101111010111010111111111111", | |
"11110110110111111011100111011010101111101110101101111101011010111111001111101001111111111110111001101111011111111101011110111110011101101011111111111111111110111111111110011110111110101111010101111101", | |
"10011111111111001110101101011000101011111110111111111111111110111000111111110111011110111111101001110101111111110011110011111011111111101111000000111111101100111010111111111011100011111011011110011011", | |
"11010101110111111111101011111110111111111011111111101101011111111010111110101001111001101111110111101010011110111111111111111111111110110010011110111010111110111001101100111011001101100111100100000010", | |
"01111011011001000110011111011101111010111011111111011111111101011111111111111011111111001011110111111110111011111101111111110111111110111011110111011111111111000111011110111110111011111110010111111111", | |
"11001111101111101101010101111111101111101111010111111101111101111011111100101111000111100110111110001111111011111110011101110110111100011010111111101111111110111111011110101111111111101110100111111011", | |
"00110111010111111010011011011101111101110111010011011001101111111110111100111111111111101110001011011111111100111111101111111011100111111111101110110111111011111111111011111110011011111011111111111101", | |
"11100000011101110111110111110101111011111110111101011111110110001110111101110110010111011011011111111111000011111010110111100111111111010111111010101011101110111000011111111011110011111011110011011111", | |
"01111111111111111011111110111011101010111111011111111110111110100000011111010111110110111011011111111011110101111101111111111011111110011011111111101110011111010111110011111010000111111100001011110111", | |
"10100000011111111101111111011101111111011111111101111100111111111111110101000111101101110000111110111111011111100110111111111011001111011111111001111111111111111011011111111111011110111101011111110111", | |
"01101010101101111111111110110110010011010100111101111101111011011011010010101111110101101101101011110111111111011111101011111110011110111101101111111111111011011111110111110001110111011111101111111110", | |
"11111110110110011111101111101101111011000011011011001110000111110010111001111111110001011011100100110110011011111111111111111111111111111011101111010111010111011011101111111110001011010001110011011100", | |
"01111111111101101011011111100101111011110010110111111110111011110111111101111111111011100101110111111111101111101111111011110101111110011110011101101111101111101110111111111001111101010111101011011110", | |
"11111111111011111111111110111111101111011111001111110001011010110111011000011110101101111101110111010110111011011111101111111111111111111110111111111111111111111101111000101111101011110101110010111111", | |
"00110111111011111111011111011011010011110111101111111011110111011010111100111111101100111110111111101110111110100110110110111111111101111011110111111111111111111111011100111110101011001101111100100010", | |
"01111011111111111011110111111110111110111110011111111110101111111111110101111011111010010001010101101111101011001100111110111101011111110110111111111110011111111010011001111111111111111011110010111101", | |
"01101111111111111011111111110111111100110111111111011111111111111111110111111111111111100111101011111111011110110011111110111110111101101000011110110101110011011110110010011110011001111011101110111111", | |
"11011001111111111100101101011111111111111001110110010110101110001111011111111110111111110111111111110111111111010111101111111111111111101100100111111110111100111011111111101111110011110010011110111111", | |
"11111011110101101111111110111110010111100110110111110011011110011000111110111110001001101101100110001110111011011111111111110111101110101001100111110111011010111111111111001101111110111100111111111111", | |
"11101101111111111010101111111111101011111110110001110011110111001110111101111101111111011110110100111111111101011100110011011111111100011101100110101101001111111010011111011011011101000011110111111110", | |
"11111011111111111111101110010111000100111110111111011111111101001111111111011110011110101011011101111001111111111011101111110111011101011001011101100011111111111001101111001101111111111011111101111011", | |
"01110111000111101101110101111111010111111101110010101111111111011011111111111111101101001111111101110101011111111011111110111111101111110111110111011111101111011110111101111111111111101111101111001111", | |
"10111110011111110110000111111011111010011110011111011000111111111011011111111111111111010111110111101011111111101111101111111111001100111111001101111011110111111001011111111101011011111111010110111001", | |
"11111111011111101111110111011111101111111100101111110011110101111111111111011000111110011011111101101011011100111011011111111110101101001111011011111111001111111110111110101011101111111011010111011101", | |
"11111010011000111111110111111111110011100110111111011011101011111110010000011011111111101111110111111111111111111110100111011011010111111111110111111111011111110101111100111111111110011111111101110110", | |
"11011011111011111010101111111111111111110111111011111111110101111111111100110111101011111110011111111111100111111111111110111111101011101111001111111001111111101111110101101001010111110111011111000010", | |
"11111001110011111101111111111111100111111111011111111101111001111111111111111101110110111111011110001111111111011111110011010111101111110111011111011010011001111110111111111011111111110111101111101111", | |
"10111111111011111101111101111101110111011011111111110110010110011101101100010111010011011101101101111101111100111011101110110111110111111111111111111111110001011111110011101111111101100011111011111111", | |
"00111111110101101111100101101011111011110010101110101101111111111101011010010011111111111101011100100110111111111011111111011111111111100111111111111101110011101111111111111111011110111111111111111101", | |
"11111101011101101011011111010011111111011010111100001111111101111101010111111101101111011011111111011001111111111111001111011111011101011111111110110110011111011111111110111111111111111110111111111011", | |
"01011101111101011110110010111111110111111001101111101001011111111110001101111110111111111111111111111111111011111101110110111111101010101001111001110111111110100101111111110111011010100011111011111111", | |
"11111111111010110100110011101001111000101101111111111011101111111111011101111011111111011101111111111001111011110111110111011111111011101111011010101110011010111011111101111111111110111011011111010100", | |
"11111111100011111011110110111110110111101101111111110111111110101010111001110101111111011110100111111011110111011111110001101110111111111111111111110110101110111101101101111111100111110010010001111111", | |
"11111101101101011101011011110111111101011101111011110111111111110010111010110111001011111110000011111001011100011110111110110111110010111100100111111110101111001001010101101100011001111111011111011011", | |
"11110110101111111011010110110011100111101111111101010011010011111100010111101011110111110101110111111111111111111011111110101110111111011011111011111111111001101011010111111111110111110111101100100101", | |
"01111110111100001111010011110110011111111111111111011011111111101010001111111111011111101111001111111111110001101111110111111111111110111111011111010111111111011111101011111111111101011101111011110101", | |
"11101101111111110101011101111101111011010111011001111110011111101111010001101101011100101111111011110110111011011111100001111111001111101110011111101101101011111001111001101111111111011011110110011111", | |
"01111111011101111111111011111101111011011111111111110111010011101111111101101010111111110111101110111111111011001111000110011111111110111111111110110011011011110001110101111100101001110011111111010110", | |
"01101001011011111110011101000101101011111101011100101111110111010110110100011111111110101101101111101110111110110101111111011101111111111101110110111111111111111111111111111101111101010111000111010011", | |
"10111101111111100011011111111111111011111011111111011111111111011111111111000111101110111010111111011111111101011101101101101111111111110100101111101110100111111111110110100111101111111111011001101101", | |
"11111010010011111111101001111000111110111110001111101101101101111010111111111111100010101011110111101011111111111111111111100011011111001111010111011101101111101111101110111111101111111111001111111110", | |
"11110111111111111101111001111011101110110111101111111110111111011111111000100011111101111001101110011110111111101001111111111111100011011110110001111101101111011010111111100101111111001111111110111101", | |
"11111111100011001111100111000111111011111111111110000011111100111010111010111111111111111111110111101111101111111100111110111111001111011010111111101011011100100111011110111110111110111111101111111110", | |
"01011111011111111101110111011111010111111111101111101111111011111110111100111010111111011111111111111011100101101101111001111011111011111111111011011111110100011111001111011111111100110111111111111111", | |
"01111000110111011110111111111111110110111100101111111011111110011011111111010111111011000010011111101110011010111111110111110011111111111110111111111111110011101111110111111101111111111111111111111111", | |
"10110111001111010111010011011111011111111101111110011111110011111011101111111111001101010001111111111111110111111001111101011111111011111101110111101111111100101011101111111101111111011111101101111101", | |
"11111110001111111110101111101111100011011111110111111111111111011011010101110101111011011111001111111101110110111111110111110101111111111001011111111011010110011110111111011111011110111111111110111111", | |
"01111110011110111011110111011111111111111101110111111110110111001110111011111111111111101111111011011111111101111110000111111111100111101111110011011001111110111011111001111000101001111111111111111111", | |
"11111111111110111011111111111110101011111110111110101001111111111011111111100011110011111110011110111111111101110111111110111101111111011111101111111101011111011110111110111111101111111110111111111101", | |
"11111011011010111111111111101111101001100001011100111011110111011111110100011110111111110111110111111110111110111110001100111110011111101111001111110100111101100111111010110101111001111001111100111111", | |
"11011111110101111111110100111111111111111011110111111111111110111010011111110111110000111011111101101111001111101100111111101111111101101010110111111111111011111001111110110101011100011111101101011010", | |
"01100101111111101100011001111011111111110111111001100100111011101111111001111001111101111010101111110101110111110101011111101111100110111111111111111011111101111111111111111111110110011101111111111111", | |
"10111111110111101110111111100111101011110111110111100111111111101100011101111111011011111111101011001111111111011111011101011111111111111110111111110111011111111011011111110110111111111111011011011100", | |
"11111111111111111111111001110111110101110101100011111111110111101011110100110111001111101111110111000000111110010011100111101010111101111111111111111011110111111101110111101111010111111111111111101111", | |
"10101110111101011111111110111110011111111010011101111111011110111111101101011111100111111101010111111101100011101111111011111111110110110111011111111111111111101111110111111111111101110111011111100011", | |
"10111110111111101111011111110101111101011110000101100111111101111011111110111111101111110101110011111000101101110011110100111011001111111011000001110011011110110110111011111111101011111111001111111010", | |
"10111110110101001101011111111011011111100100000101111111111110111111110000110111111011111110001111100101111110101110011110011111111101111101011111111111110011111101111111110111011111001011011111111111", | |
"01100110111001111111111011100100110100111111001111110111100110111100111111111100111111101110100110011110111101111111111110000011111111100110111111111110110101101111000001001111011111110111010111011101", | |
"11101011111011110010110110101010111010001111110111011110110111111111111001111111011100111101100011111111111101101111111111000001111111011111011111101110110110110111110111111101111100111111111111111111", | |
"11110100011110111101011111011110111001100110111111111111111110011111110011011101111111111010011011011001111101010111111111111111111011110011111111110111011011111111011111101110011011110011110111111110", | |
"11110111111111110110111111000011111101110101111100110011111111101111011011101111001010111010111111111111110011111111111111111101110101110111111001111100111111001011111011111100111011011101111111001111", | |
"01111011111111111011011101111111111111001111101001010111111111011101101010110011111110101010001111100101011111111101111011111010110110110111111111111110010110111111100111111000111011010010011111111101", | |
"01111111111011110110011110101111110001110111111111111001111111010111011001110111111111111011110011111101011001111110111110011111010101101111101111111110111000001011110111101111111111111111011111111111"] | |
s = Solution() | |
print 'solution:' | |
print s.maximalSquare(test) | |
print s.maximalSquare(test2) | |
print s.maximalSquare(test3) | |
print s.maximalSquare(test4) | |
print s.maximalSquare(test5) | |
print s.maximalSquare(test6) | |
start = time.time() | |
print s.maximalSquare(test7) | |
end = time.time() | |
print("Elapsed time was %g seconds" % (end - start)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Brilliant!