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))