Problema
Definamos un conjunto de Cantor generalizado eliminando iterativamente algunos segmentos de longitud racional del medio de todos los intervalos que aún no se han eliminado, comenzando desde un único intervalo continuo.
Dadas las longitudes relativas de los segmentos a eliminar o no, y el número de iteraciones a realizar, el problema es escribir un programa o función que genere las longitudes relativas de los segmentos que se han eliminado o no después de las n
iteraciones.
Ejemplo: eliminar iterativamente el cuarto y sexto octavo
Entrada:
n
- número de iteraciones, indexadas a partir de 0 o 1
l
- lista de longitudes de segmento como enteros positivos con gcd(l)=1
longitud impar, que representan las longitudes relativas de las partes que permanecen como están o se eliminan, comenzando desde un segmento que no se elimina. Como la longitud de la lista es impar, el primer y el último segmento nunca se eliminan. Por ejemplo, para el conjunto regular de Cantor, esto sería [1,1,1] para un tercio que se queda, un tercio que se elimina y nuevamente un tercio que no.
Salida:
Lista de números enteros o
, gcd(o)=1
, de longitudes de segmento relativas en el n
º iteración cuando los segmentos que no se eliminaron en la iteración anterior se sustituyen por una copia reducida de la lista l
. La primera iteración es justa [1]
. Puede usar cualquier método de salida inequívoco , incluso unario.
Ejemplos
n=0, l=[3,1,1,1,2] → [1]
n=1, l=[3,1,1,1,2] → [3, 1, 1, 1, 2]
n=2, l=[3,1,1,1,2] → [9,3,3,3,6,8,3,1,1,1,2,8,6,2,2,2,4]
n=3, l=[5,2,3] → [125,50,75,100,75,30,45,200,75,30,45,60,45,18,27]
n=3, l=[1,1,1] → [1,1,1,3,1,1,1,9,1,1,1,3,1,1,1]
Puede asumir que la entrada es válida. Este es el código de golf , por lo que gana el programa más corto medido en bytes.
[0, 1, 2, 4, 6, 7]
lugar de[3, 1, 1, 1, 2]
?