Foros del Web » Programando para Internet » Python »

Ayuda!! Comparar elementos de una matriz!!!

Estas en el tema de Ayuda!! Comparar elementos de una matriz!!! en el foro de Python en Foros del Web. Hola me podrias ayudar?? mi problema es que no puedo hacer una funcion que compare los eltos de una matriz... es decir verificar si al ...
  #1 (permalink)  
Antiguo 27/12/2009, 17:07
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 15 años
Puntos: 4
Ayuda!! Comparar elementos de una matriz!!!

Hola me podrias ayudar?? mi problema es que no puedo hacer una funcion que compare los eltos
de una matriz... es decir verificar si al menos uno de ellos se repite... es el ejercicio del cubo magico y una condicion es q sea de orden impar y que no repita ningun numero

Código PHP:
# este codigo carga e imprime una matriz de orden n
def cargar (d):
    
matriz=[ [ input() for i in range(d) ] for j in range(d)]

    return 
matriz
def repite 
(m):
        
# ¿?¿?¿ yo se que entra la matriz y que retorna True si se repite elto o False en caso  
        # contrario

print "Ingrese la dimension de la matriz"
d=input()
print
print 
"Cargar matriz..."
m=cargar(d)
print 
"La matriz es: "
for cont in m:
    print 
cont 
Como veran solo me falta la funcion que compare si los elementos se repiten (o si al menos uno de ellos se repite) ya se como hacer si la suma de las filas y columnas y diagonales son iguales pero no lo puse porque es muy largo el codigo!!! ojala que me puedan ayudar esta funcion es la unica q no me sale, eso q estoy terminando el 1 año de analista en sistema... muchas gracias por leerlo
  #2 (permalink)  
Antiguo 27/12/2009, 18:17
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Ayuda!! Comparar elementos de una matriz!!!

No uses la función input, por que pueden insertar código en tu programa. Usa raw_input y luego conviértelo a un numero. Ya que inpunt es solo un eval(raw_input()).

Código Python:
Ver original
  1. # este codigo carga e imprime una matriz de orden n
  2.  
  3. def cargar(d):
  4.     matriz = [[0] * d] for i range(d)] #Inicializamos la matriz con ceros
  5.     #matriz=[ [ input() for i in range(d) ] for j in range(d)]
  6.     for i in range(d):
  7.         for j in range(d):
  8.             matriz[i][j] = int(raw_input())
  9.     return matriz
  10.  
  11. def repetido(matriz):
  12.     return len(set(reduce(lambda x,y: x+y, m)) == len(matriz) ** 2
  13.  
  14. print "Ingrese la dimension de la matriz"
  15. d=input()
  16. print
  17. print "Cargar matriz..."
  18. m=cargar(d)
  19. print "La matriz es: "
  20. for cont in m:
  21.     print cont
  22. print repetido(m)
  #3 (permalink)  
Antiguo 27/12/2009, 18:59
Avatar de leocente  
Fecha de Ingreso: diciembre-2009
Mensajes: 62
Antigüedad: 15 años
Puntos: 4
Respuesta: Ayuda!! Comparar elementos de una matriz!!!

Hola despues de a ver intentado de varias formas logre hacer que me ande el programa para verificar si los eltos de la matriz estan repetidos o no... si no hubiera sido por razpeitia todavia estuviera intentando!! de echo modifique la funcion cargar de razpeitia y puse que retornara un boolean en la funcion repetido!(), ha y despues lo llame dentro de un if... bueno les dejo el codigo para los que lo necesiten!! ojala le sirva a alguien mas aparte de mi

Código Python:
Ver original
  1. # Leocente con participacion de razpeitia ja...
  2.  
  3. def cargar(d):
  4.     matriz = [[0 for f in range(d)] for c in range(d)] # Inicializamos la matriz con ceros
  5.    
  6.     for i in range(d):
  7.         for j in range(d):
  8.             matriz[i][j] = int(raw_input()) # leemos los eltos de la matriz y se los asignamos
  9.     return matriz
  10.  
  11. def repetido(matriz):
  12.    return bool(len(set(reduce(lambda x,y: x+y, matriz))) == len(matriz) ** 2) # devuelve True si NO se repite
  13.  
  14. print "Ingrese la dimension de la matriz"
  15. d=input()
  16. print
  17. print "Cargar matriz..."
  18. m=cargar(d)
  19. print "La matriz es: "
  20. for cont in m:
  21.     print cont
  22. if (repetido(m)):
  23.     print 'NO se repite'
  24. else:
  25.     print 'Se repite'

Por finnnnnnnnn!!! hace 2 años que no podia hacerlo!! en realidad lo tenia que hacer en eclipse (java) pero ya vere la forma de hacerlo en java!! igual si alguien me da una mano en java esta todo bien ja. gracias forooooooooooo!!!!!!! y a ustedes claro

Última edición por leocente; 27/12/2009 a las 20:21
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:51.