Dada uma matriz contendo n linhas. Cada linha possui um número igual de m elementos. A tarefa é encontrar elementos que vêm consecutivamente n vezes na horizontal, na vertical e na diagonal na matriz. Se houver vários desses elementos, imprima o menor elemento. Se não houver tal elemento
, imprima -1.

Exemplos:

Entrada: n = 4
 esteira [5] [5] 2 1 3 4 5
            3 2 1 3 4
            5 3 2 1 4
            5 4 3 2 1
            5 4 4 3 2
Produto:   1
Entrada: n = 2
 esteira [4] [4] 2 0 5 1
            0 5 3 5
            8 4 1 1
            3 8 5 2
Produto: 0

Implementação:

def check(l,row,col ,n,l2): 
   
    
    
    for i in range(row - n+1): 
        for j in range(col - n+1): 
                    num = l[i][j]  
                      if(row-i >= n and col-j >= n): 
                count = 0
                                    for k in range(n): 
                                                    if(num != l[i+k][j+k]): 
                        break
                                                        else: 
                        count += 1
                                            if(count == n):  
                    l2.append(num) 
            else: 
                break
       
    
    for i in range(row): 
        for j in range(col - (n-1) ): 
                num = l[i][j] 
            count = 0
                for k in range(n): 
                        if num != l[i][j + k]: 
                    break
                else: 
                    count+=1
                            if(count==n): 
                l2.append(num) 
   
    
    for i in range(row - (n-1)): 
        for j in range(col): 
                num = l[i][j] 
            count = 0
                for k in range(n): 
                        if num != l[i+k][j]: 
                    break
                else: 
                    count += 1
                            if(count == n): 
                l2.append(num) 
   
    
    
    
    
   
    
    for i in range(0, int(row / 2)): 
 for j in range(i, col - i - 1): 
                num = l[i][j] 
                  l[i][j] = l[j][col - 1 - i] 
                  l[j][col - 1 - i] = l[row - 1 - i][col - 1 - j] 
                  l[row - 1 - i][col - 1 - j] = l[row - 1 - j][i] 
                  l[row - 1 - j][i] = num 
               
    
    for i in range(row - n+1): 
        for j in range(col - n+1): 
                    num = l[i][j] 
                    if(row-i >= n and col-j >= n): 
                count = 0
                                    for k in range(n): 
                                                    if(num != l[i+k][j+k]): 
                        break
                                                    else: 
                        count += 1
                                    if(count == n): 
                    l2.append(num) 
            else: 
                break
   
    
    if(len(l2) == 0): 
        print(-1) 
      
    
    
    else: 
        print(min(l2)) 
  
if __name__ == "__main__": 
   
    
    l = [[2, 1, 3, 4, 5], 
        [0, 2, 1, 3, 4], 
        [5, 0, 2, 1, 4], 
        [5, 4, 0, 2, 1], 
        [5, 4, 4, 0, 2]] 
   
    
    
    l2 = [] 
    check(l,4,4,2,l2) 

Resultado :

0