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 niteraciones.
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)=1longitud 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]?Respuestas:
Jalea ,
15 1312 bytes-2 gracias a Dennis (el uso de un Enlace en lugar de una cadena permite que el derecho sea utilizado implícitamente por
¡; No es necesario envolverlo1en una lista debido al hecho de que Jelly imprime las listas de un elemento igual que el elemento)-1 gracias a Erik the Outgolfer (use
Ɗpara guardar el uso de la nueva líneaÇ)Un programa completo que imprime una lista en formato Jelly (
[1]se imprime como1)Pruébalo en línea!
¿Cómo?
fuente
Python 2 ,
1201071041031009989 bytesPruébalo en línea!
Salvado
fuente
R , 94 bytes
Pruébalo en línea!
fuente
Haskell ,
7658 bytesPruébalo en línea!
La función
(%)toma la lista de longitudes de línealcomo primer argumento y el número de iteracionesncomo segunda entrada.¡Gracias a Angs y Ørjan Johansen por -18 bytes!
fuente
ny soltándola por#completo%se puede acortar al%a=do(x,m)<-zip a$a>>[l,[sum l]];(*x)<$>m.JavaScript (Firefox 42-57), 80 bytes
Necesita esas versiones específicas porque utiliza tanto la comprensión de matriz como la exponenciación.
fuente
JavaScript (Node.js) , 71 bytes
Pruébalo en línea!
fuente
Java 10, 261 bytes
Modifica la lista de entrada en lugar de devolver una nueva para guardar bytes.
Pruébalo en línea.
fuente
Jalea , 13 bytes
Pruébalo en línea!
Programa completo Salidas en
1lugar de[1]. Molesto,ḋno funciona como×S¥en este contexto, yƭno funciona bien con nilads. > _ <fuente
APL (Dyalog Classic) , 20 bytes
Pruébalo en línea!
fuente
K (ngn / k) , 27 bytes
Pruébalo en línea!
{}es una función con argumentosxyy(y;+/y)un par deyy su suma{}[(y;+/y)]proyección (también conocida como curry o aplicación parcial) de una función diádica con un argumento.xserá(y;+/y)yyserá el argumento cuando se aplique.,1lista singleton que contiene 1x{}[]/aplicar la proyecciónxtiempos de(#y)#xremodelar a la longitud del resultado actual, es decir, alternar entre el exterioryy su sumay*multiplique cada elemento de lo anterior con el elemento correspondiente del resultado actual,/concatenarfuente
Ruby , 73 bytes
Pruébalo en línea!
fuente
Pyth , 20 bytes
La entrada es una matriz de segmentos
l, luego iteracionesn. Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .fuente