No estas registrado.

#1 2014-12-11 14:33:44

notfrombrooklyn
Tuxes
Desde: Sevilla
Registrado: 2013-02-20
Mensajes: 693
Página Web

[Solucionado] Duda de programación

Hola gente, me he topado con un problema de programación. Actualmente estoy usando python, pero el problema es lo suficientemente genérico para que pueda ser aplicado a cualquier lenguaje de programación.

Tengo una lista del tipo ['a','b'] y lo que quiero es generar una lista de segundo orden donde cada elemento sea una lista del tipo ['a','b','a'].

Los elementos se pueden repetir, pero no puede haber un elemento repitido al lado de otro, la posición importa (si tengo ['a','b','c'], no es lo mismo ['a','a','b','c'] que ['c','b','a','a']).

Gracias por vuestra ayuda.

Ultima edición por notfrombrooklyn (2014-12-14 14:23:46)

Desconectado

#2 2014-12-12 05:23:43

barnarasta
Tuxes
Registrado: 2012-10-27
Mensajes: 99

Re: [Solucionado] Duda de programación

Hola notfrombrooklyn
si lo que deseas evitar son elementos repetidos contiguos, anteriores o posteriores, quizas podrias controlarlo por el valor ascii.


Buscando conocedores de SCULPTOR4GL (linux) para intercambiar experiencias.

Desconectado

#3 2014-12-13 05:44:08

notfrombrooklyn
Tuxes
Desde: Sevilla
Registrado: 2013-02-20
Mensajes: 693
Página Web

Re: [Solucionado] Duda de programación

@Barnasta

Lo de evitar elementos repetidos contíguos no me preocupa, aunque los genere luego puedo eliminarlos. El problema es generar la lista, he estado probando itertools (de python), pero las combinaciones no generan lista de rango mayor que el número de elementos dados y las permutaciones no me generan todas (precuponen que ['a','b','c'] es igual a ['c','b','a'] y no dan la última).

Desconectado

#4 2014-12-13 12:41:38

notfrombrooklyn
Tuxes
Desde: Sevilla
Registrado: 2013-02-20
Mensajes: 693
Página Web

Re: [Solucionado] Duda de programación

Estoy atrancado aquí:

>>>import itertools
>>>[list(x) for x in itertools.combinations_with_replacement('AB', 3)]
[['A', 'A', 'A'], ['A', 'A', 'B'], ['A', 'B', 'B'], ['B', 'B', 'B']]

No se por qué no me produce ['A','B','A'] ni ['B','A','B'].

Desconectado

#5 2014-12-13 16:47:36

notfrombrooklyn
Tuxes
Desde: Sevilla
Registrado: 2013-02-20
Mensajes: 693
Página Web

Re: [Solucionado] Duda de programación

Ea, me han solucionado la duda en Stack Overflow.

Usando itertools product en vez de combinations:

>>>import itertools
>>>[list(x) for x in itertools.product('AB', repeat=3)]
[['A', 'A', 'A'], ['A', 'A', 'B'], ['A', 'B', 'A'], ['A', 'B', 'B'], ['B', 'A', 'A'], ['B', 'A', 'B'], 
['B', 'B', 'A'], ['B', 'B', 'B']]

Ultima edición por notfrombrooklyn (2014-12-13 16:48:08)

Desconectado

#6 2014-12-14 00:22:11

elav
BOFH
Desde: SystemInside
Registrado: 2011-12-03
Mensajes: 1,313
Página Web

Re: [Solucionado] Duda de programación

O_O Lo mio definitivamente no es la programación.. Me quedo con el diseño gráfico que como dicen por ahí: Para estudiarlo no hay que dar matemáticas jajaja.


”... Hacer uso de Software Libre es sentir entre tus manos, palpable y predecible, esa necesidad básica llamada Libertad al que todo ser humano aspira y que muchos por desconocimiento, o simplemente por no entenderlo, nunca podrán tener... ”

Desconectado

Pie de página

Powered by FluxBB