Solucionado (caso partic): Desde una serie obtener subserie.
Publicado: 05 Nov 2018, 04:00
Llamemos a esto:
1
2
3, 4
3
3, 5
6, 7, 8
4
3, 6
6, 7, 9
10, 11, 12, 13
etc
...la serie base.
Como ven, sus elementos pueden ser un número o subseries de números. Ahí están siempre en orden pero no necesariamente es así.
Se describe o produce (en resumen) así: No sé si estoy olvidando algo importante, una descripción más detallada sería esta:
Quiero transformar la serie en esto:
1
3, 4
2
6, 7, 8 si se cumplen ciertas condiciones, sino saltear.
3, 5
(6, 7, 8) o (10, 11, 12, 13) o saltear, dependiendo de ciertas condiciones.
(6, 7, 8) o 6, 7, 9, dependiendo de si 6, 7, 8 se usó o no.
El cambio es que en los momentos pares puede haber una serie paralela, compuesta de subseries de largo+1 al anterior. En cuanto a qué números contiene, eso es parte de lo complejo, porque usa los que habría en la serie base.
La serie base sólo cambia en que al producir un largo por 1era vez, le suma 1 al último número, no repite una subserie ya producida.
Lo que quiero, como dice el título, es obtener las subseries de la serie paralela, a partir de la serie base que ya tenga.
Si por ejemplo tengo
1
3, 4
2
...debo poder obtener 6, 7, 8 sin hacer previamente la serie.
Si tengo
1
3, 4
2
6, 7, 8
3, 5
...debo poder obtener 10, 11, 12, 13.
Si tengo
1
3, 4
2
3, 5
...debo poder obtener 6, 7, 8
Por lo que veo es algo como:
Último número de la subserie anterior más larga + 2 - veces que se salteó el crear un nuevo largo.
Si por ejemplo tengo
1
3, 4
2
...debo hacer 4+2 para obtener 6, el resto es sólo sumar 1.
Si tengo
1
3, 4
2
6, 7, 8
3, 5
...debo hacer 8+2 para obtener 10...
1
3, 4
2
salteado
3, 5
...debo hacer 5+2-1 para obtener 6...
Bueno... probaré a ver si funciona o no. ¿Qué creen? ¿saben (o se les ocurre) un método más simple?
1
2
3, 4
3
3, 5
6, 7, 8
4
3, 6
6, 7, 9
10, 11, 12, 13
etc
...la serie base.
Como ven, sus elementos pueden ser un número o subseries de números. Ahí están siempre en orden pero no necesariamente es así.
Se describe o produce (en resumen) así:
Código: Seleccionar todo
El 1er número es 1.
El largo actual (ActualL) es 1.
El largo máximo (MaxL) es 1.
Repetir:
Si ActualL < MaxL
ActualL aumenta 1.
Sumar 1 al último número de la subserie con ese largo, y si llega al máximo (sigo hablando del número, no del largo) resetearlo y aumentar el delantero y así sucesivamente. Es igual a aumentar un número cualquiera, acá el tema es que los elementos no van del 0 al 9 sino del 1 hasta aún no sé cuánto, pero más de 100. Además, si por ejemplo el largo es 2 y los números son máximo, máximo, queda 1, 1, no se agregan números (sino cambiaría el largo).
Sino
Crear una serie compuesta de ActualL números, que comience desde el último número usado+1.
ActualL vuelve a ser 1
MaxL aumenta 1.
Spoiler: show
1
3, 4
2
6, 7, 8 si se cumplen ciertas condiciones, sino saltear.
3, 5
(6, 7, 8) o (10, 11, 12, 13) o saltear, dependiendo de ciertas condiciones.
(6, 7, 8) o 6, 7, 9, dependiendo de si 6, 7, 8 se usó o no.
El cambio es que en los momentos pares puede haber una serie paralela, compuesta de subseries de largo+1 al anterior. En cuanto a qué números contiene, eso es parte de lo complejo, porque usa los que habría en la serie base.
La serie base sólo cambia en que al producir un largo por 1era vez, le suma 1 al último número, no repite una subserie ya producida.
Lo que quiero, como dice el título, es obtener las subseries de la serie paralela, a partir de la serie base que ya tenga.
Si por ejemplo tengo
1
3, 4
2
...debo poder obtener 6, 7, 8 sin hacer previamente la serie.
Si tengo
1
3, 4
2
6, 7, 8
3, 5
...debo poder obtener 10, 11, 12, 13.
Si tengo
1
3, 4
2
3, 5
...debo poder obtener 6, 7, 8
Por lo que veo es algo como:
Último número de la subserie anterior más larga + 2 - veces que se salteó el crear un nuevo largo.
Si por ejemplo tengo
1
3, 4
2
...debo hacer 4+2 para obtener 6, el resto es sólo sumar 1.
Si tengo
1
3, 4
2
6, 7, 8
3, 5
...debo hacer 8+2 para obtener 10...
1
3, 4
2
salteado
3, 5
...debo hacer 5+2-1 para obtener 6...
Bueno... probaré a ver si funciona o no. ¿Qué creen? ¿saben (o se les ocurre) un método más simple?