Buenas compañeros.
Tengo un buen jaleo y no se como coño resolverlo.
Os cuento:
- Necesito obtener un patrón para definir un algoritmo combinatorio que me permita commutar todos los elementos de diferentes grupos para obtener todas las posibles combinaciones de la conjunción de los grupos.
Se que suena extraño, pero me explicaré con un ejemplo claro.
Tengo 4 grupos, por ejemplo.
Grupo --> Contenido
1 --> (A|
2 --> (A|B|C)
3 --> (A)
4 --> (A|
ok?
Mi objetivo es establecer TODAS las posibles combinaciones existentes entre grupos y contenidos de estos:
AAAA
AAAB
ABAA
ABAB
ACAA
ACAB
BAAA
BAAB
BBAA
BBAB
BCAA
BCAB
...
Veis lo que hago? Siempre cambio el del final primero. Y cuando no quedan elementos en el grupo del final, en el anterior lo cambio, y vuelvo a mezclar con el ultimo grupo desde el primer elemento de este ultimo grupo (en este ejemplo, el penultimo grupo solo tenia un elemento, luego el que cambiaba cuando llegaba a B en el ultimo grupo, era el segundo grupo).
He buscado algoritmos de combinatorias y permutaciones. Pero no me sirve el juego factorial de entrada, porque no quiero cambiar ordenes ni permutar. Ni tampoco mezclar. Es sencillamente como "un interruptor".
Vas cambiando cada elemento del ultimo grupo, y cuando es el ultimo, cambias un elemento del grupo anterior, y vuelves a empezar con el ultimo grupo. Cuando no puedes cambiar ninguno del penultimo, cambias uno del anterior y vuelves a empezar todo el proceso con el ultimo y penultimo.
De hecho es una combinatoria multidimensional.
Con una estructura tipo arbol, podria funcionar, pero me gustaria un algoritmo de tipo recursivo que me permitiera obtener todas las posibles variedades.
En realidad, no serian letras los valores de cada grupo, sino numeros concurrentes. La gracia que tiene es que son indices a unos arrayes y que posteriormente, dadas todas las combinaciones posibles, me permitirian obtener unas frases muy concretas.
Si pudierais hecharme un cable, os lo agradeceria mucho!
Grácias!
PD: no lo pongo en desarrollo, porque el algoritmo en si lo haria yo. El tema está en que por aquí hay estadístas y matemáticos que podrian orientarme en cual es el camino a seguir.
Grácias de nuevo!