import random
#Realizar un algoritmo en Java o Python para llenar datos de una matriz de orden n*m con 
#números enteros aleatorios de más de dos cifras. Si la matriz es orden cuadrática agregar una 
#fila caso contrario agregar una columna. Para obtener los datos de la nueva fila o columna
#considerar los índices de cada posición y todas las posiciones adyacentes, si la suma de los 
#índices es par el nuevo dato es la suma de los dígitos pares; caso contrario el nuevo dato es #la 
#suma de los dígitos impares. Ordenar la matriz por el método de selección. Imprimir los valores 
#de la matriz original y ordenada de manera ascendente. Evaluar el tiempo de ejecución del 
#método de ordenamiento con 10 tamaños diferentes de la matriz.

def llenar_matriz(n, m):
    matriz = []
    for i in range(n):
        fila = []
        for j in range(m):
            num = random.randint(10, 99)
            fila.append(num)
        matriz.append(fila)

    if n == m:
        nueva_fila = []
        for i in range(m):
            nueva_fila.append(0)
        matriz.append(nueva_fila)
    else:
        for fila in matriz:
            fila.append(0)

    return matriz


def imprimir_matriz(matriz):
    for fila in matriz:
        print(" ".join(map(str, fila)))


def obtener_valor_valido(matriz, i, j):
    if 0 <= i < len(matriz) and 0 <= j < len(matriz[0]):
        return matriz[i][j]
    return 0


def sumar_impares_adiacentes(matriz):
    for i in range(len(matriz)):
        for j in range(len(matriz[i])):
            if matriz[i][j] == 0:
                suma = 0
                for x in range(-1, 2):
                    for y in range(-1, 2):
                        if x != 0 or y != 0:
                            valor = obtener_valor_valido(matriz, i+x, j+y)
                            for dígito in str(valor):
                                if int(dígito) % 2 != 0:
                                    suma += int(dígito)
                matriz[i][j] = suma
    return matriz


# Ejemplo de uso
n = 3
m = 3
matriz = llenar_matriz(n, m)
print("Matriz original:")
imprimir_matriz(matriz)
print()
print("Matriz con suma de digitos impares en posiciones adyacentes:")
imprimir_matriz(sumar_impares_adiacentes(matriz))