Foros del Web » Programando para Internet » Python »

Ir creando vector con valores entre si sin repetición con todas las combinaciones

Estas en el tema de Ir creando vector con valores entre si sin repetición con todas las combinaciones en el foro de Python en Foros del Web. Buenas, soy totalmente novato en la programación y estoy empezando con python, y estoy intentando hacer un algoritmo que haga lo siguiente: Tengo un vector ...
  #1 (permalink)  
Antiguo 13/03/2011, 02:00
 
Fecha de Ingreso: marzo-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Pregunta Ir creando vector con valores entre si sin repetición con todas las combinaciones

Buenas, soy totalmente novato en la programación y estoy empezando con python, y estoy intentando hacer
un algoritmo que haga lo siguiente:
Tengo un vector con x valores, por ejemplo 3 valores y el algoritmo quiero que haga lo siguiente:

v=[0,1,2] #Entre una fila y otra pasaría por el algoritmo
v=[0,2,1]
v=[1,0,2]
v=[1,2,0]
v=[2,0,1]
v=[2,1,0]

Los números contenidos son para utilizarlos como direcciones a una
matriz. Me da igual que el programa no lo haga con la misma progresión que
he puesto yo, pero si debe pasar solo por esas 6 combinaciones en este ejemplo, será para cada caso el factorial del numero de valores.

No sé si me he explicado bien, yo lo único que consigo es hacer un contador, eso me lleva en este simple caso ha hacer 27 combinaciones que tengo que comprobar que cumpla con alguna de las 6 que necesito, y cuando en vez de tener un vector de 3 valores tengo uno de 20 pues ya os podéis imaginar la diferencia.

Un saludo y a ver si habéis alguno echo algo parecido. Gracias de antemano.
  #2 (permalink)  
Antiguo 13/03/2011, 13:23
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Ir creando vector con valores entre si sin repetición con todas las combin

Asumiendo que trabajas sobre python 2.x

Puedes usar permitations función dentro del modulo itertools para generar las posibles permutaciones que es lo que estas pidiendo.

Ejemplo de uso:
Código Python:
Ver original
  1. from itertools import permutations
  2.  
  3. l = [1, 0, 2]
  4. l.sort()
  5.  
  6. g = permutations(l)
  7. for i in g:
  8.     print i

No entendí bien esto:
Cita:
Iniciado por pepeska
yo lo único que consigo es hacer un contador, eso me lleva en este simple caso ha hacer 27 combinaciones que tengo que comprobar que cumpla con alguna de las 6 que necesito, y cuando en vez de tener un vector de 3 valores tengo uno de 20 pues ya os podéis imaginar la diferencia.
Si tienes 2 vectores y estas tratando de checar que uno sea alguna permutacion del otro entonces este es un caso mucho mas simple.
  #3 (permalink)  
Antiguo 13/03/2011, 13:39
 
Fecha de Ingreso: marzo-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ir creando vector con valores entre si sin repetición con todas las combin

Lo que has puesto es lo que busco. Y llevo ya unos días pensando alguna forma
de hacerlo, pero no encontraba nada bueno.
Esta función no sé como de optimizada estará (en cuanto a rapidez), pero va de lujo.
Muchisimas gracias.

En cuanto a lo que no entiendes de mi pregunta, eso simplemente un intento de hacer lo que buscaba.

Muchas gracias.

Etiquetas: todas, vectores
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 00:52.