using Test function verifica() @test matriz([0 0; 0 0]) == 0 @test matriz([0 1; 0 0]) == 1 @test matriz([1 1; 1 0]) == 1 @test matriz([1 1; 1 1]) == 2 @test matriz([1 0 0 0 1 1 1 1 0; 0 1 1 0 1 1 1 0 1; 0 1 1 0 1 1 1 1 1; 1 1 1 1 1 1 1 1 1]) == 3 @test matriz([1 0 0 0 1 1 1 1 0; 0 1 1 0 1 1 1 1 1; 0 1 1 0 1 1 1 1 1; 1 1 1 1 1 1 1 1 1]) == 4 @test matriz([1 0 0 0 1 1 1 1 0; 0 1 1 0 1 0 1 0 1; 0 1 1 0 1 1 1 1 1; 1 1 1 1 1 1 1 1 1]) == 2 println("Passou!") end function veSeTem1(m, i, j, maiorDim) for a in i:i + maiorDim for b in j:j + maiorDim if m[a, b] == 0 return false end end end return true end function maior(m, i, j) dim = size(m) maiorDim = min( dim[1] - i, dim[2] - j) while !veSeTem1(m, i, j, maiorDim) maiorDim -= 1 end return maiorDim + 1 end function matriz(m) dim = size(m) maximo = 0 for i in 1:dim[1] for j in 1:dim[2] if m[i, j] == 1 aux = maior(m, i, j) if aux > maximo maximo = aux end end end end return maximo end verifica()