Definición
Definir el n º matriz de la secuencia de CURR como sigue.
Comience con la matriz singleton A = [n] .
Para cada número entero k en A , reemplace la entrada k con k números naturales, contando desde 1 hasta k .
Repita el paso anterior n - 1 veces más.
Por ejemplo, si n = 3 , comenzamos con la matriz [3] .
Reemplazamos 3 con 1, 2, 3 , produciendo [1, 2, 3] .
Ahora reemplazamos 1 , 2 y 3 con 1 ; 1, 2 y 1, 2, 3 (resp.), Produciendo [1, 1, 2, 1, 2, 3] .
Finalmente, realizamos los mismos reemplazos que en el paso anterior para los seis enteros en la matriz, produciendo [1, 1, 1, 2, 1, 1, 2, 1, 2, 3] . Esta es la tercera matriz CURR.
Tarea
Escribir un programa de una función que, dado un número entero estrictamente positivo n como entrada, calcula el n º array CURR.
El resultado debe ser una lista plana de algún tipo (y la matriz devuelta por una función, una representación de cadena de la sintaxis de la matriz de su idioma, separados por espacios en blanco, etc.).
Este es el código de golf . ¡Que gane el código más corto en bytes!
Casos de prueba
1 -> [1]
2 -> [1, 1, 2]
3 -> [1, 1, 1, 2, 1, 1, 2, 1, 2, 3]
4 -> [1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4]
5 -> [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5]
6 -> [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6]
[2]
) en lugar de un entero?Respuestas:
Jalea, 3 bytes
Pruébalo en línea
Explicación
fuente
Python, 50 bytes
Abuso de alcance! Por ejemplo, para
i=3
, la cadena a evaluar se expande a.De alguna manera, a pesar de usar la variable de entrada de función
i
para todo, Python distingue cada índice de iteración como perteneciente a un ámbito separado como si la expresión fueracon
i
la entrada a la función.fuente
eval
, obviamente, el código en sí mismo debe ser portado, pero pensé que podría suponer eso de todos modos.05AB1E,
63 bytesExplicado
Pruébalo en línea
Guardado 3 bytes gracias a @Adnan
fuente
DFL
es 3 bytes más corto :)Retina , 33 bytes
Entrada y salida en unario.
Pruébalo en línea!
Aunque no utilicé el formulario cerrado para el desafío relacionado, adaptar esta respuesta fue sorprendentemente complicado.
fuente
+%(M!&
es la etiqueta más larga que jamás vería.Python 2, 82 bytes
Esta no es la solución más corta, pero ilustra un método interesante:
2^(2*n-1)
números en binarion
lasfuente
En realidad, 9 bytes
Pruébalo en línea!
Explicación:
Gracias a Leaky Nun por un byte e inspiración para otros 2 bytes.
fuente
;#@"♂R♂i"*ƒ
guarda un byte;#@`♂R♂i`n
guarda otra!C #, 128 bytes
fuente
using static System.Linq.Enumerable
, puedes hacer esto:int[]J(int n){var l=new[]{n};while (n-- > 0){l = l.Select(p => Range(1, p)).SelectMany(m => m).ToArray();}return l;}
APL, 11 bytes
Prueba:
Explicación:
+⍵
: comenzando con⍵
,⍣⍵
: hacer los siguientes⍵
horarios:⍳¨∘∊
: aplanar la entrada y luego generar una lista [1..N] para cada N en la entrada∊
: aplanar el resultado de esofuente
{(∊⍳¨)⍣⍵⊢⍵}
{(∊∘(⍳¨))⍣⍵+⍵}
y luego pensé, ¿cómo puedo deshacerme de esos aparatos?CJam, 14 bytes
Pruébalo aquí.
Explicación
fuente
Mathematica,
2726 bytes1 byte guardado con algo de inspiración de la respuesta de Essari.
Bastante sencillo: para la entrada
x
partimos{x}
y luego aplicar elRange
a ellax
veces (Range
esListable
lo que significa que se aplica automáticamente a los números enteros dentro enumera arbitrariamente anidados). Al finalFlatten
el resultado.fuente
Clojure, 59 bytes
Explicación:
Manera realmente directa para resolver el problema. Trabajando de adentro hacia afuera:
fuente
Python 3,
7574 bytesEsta es solo una traducción directa de la descripción del problema al código.
Editar: guardado un byte gracias a @Dennis.
fuente
print
puedes salir delexec
.[k]
por alguna razón. Dejé de tratar de averiguar si era un problema de alcance o algo más.R,
6049 bytesUso bastante directo de
unlist
ysapply
.Gracias a @MickyT por guardar 11 bytes
fuente
seq
para reducir el recuento de bytesphp 121
Realmente no hay muchos trucos detrás de este. Acoplar una matriz en php no es corta, por lo que es necesario construirla plana en primer lugar
fuente
<?
o 6 bytes con-r
y sin etiqueta.Haskell, 33 bytes
Gracias a nimi por guardar un byte.
Una versión sin puntos es más larga (35 bytes):
fuente
iterate(>>= \a->[1..a])
por un byte menos.JavaScript (Firefox 30-57),
6360 bytesPuerto de la respuesta Python de @ xnor.
fuente
SyntaxError: missing : in conditional expression
) y Babel (Unexpected token (1:21)
). ¿Qué estoy haciendo mal?)
alguna manera parece que un parásito se deslizó en esa versión.J, 18 bytes
Enfoque directo basado en el proceso descrito en el desafío.
Uso
Explicación
fuente
Pyth, 8 bytes
Pruébalo en línea!
fuente
Jalea, 7 bytes
Rápido, antes de que Dennis responda (jk)
Pruébalo en línea!
fuente
F #, 63 bytes
Devuelve una función anónima que toma n como entrada.
Reemplaza cada entrada k en A con [1..k], repite el proceso n veces, comenzando con A = [n].
fuente
Swift 3, 58 Bytes
Destinado a correr directamente en el patio de recreo, con n configurado en la entrada:
Sin golf, con la mayoría de las anotaciones de manos cortas revertidas:
fuente
Java, 159 bytes
Procedimiento
Uso
Salida de muestra:
fuente
Python 2,
696866 bytesEditar: Guardado 1 byte gracias a @xnor. Guardado 2 bytes gracias a @ Dennis ♦.
fuente
exec
. En Python 2, es una palabra clave, no una función. Cuento 68 bytes por cierto.Bash + utilidades GNU, 49
Funciones recursivas canalizadas FTW!
n
se pasa en la línea de comandos. La salida está separada por una nueva línea.El uso de
dd
estadísticas de causas se enviará a STDERR. Creo que esto está bien, pero si no,dd
se puede reemplazar concat
un costo de 1 byte adicional.fuente
{...;}
con(...)
para guardar un byte.Perl 5, 53 bytes
Una subrutina:
Véalo en acción como
fuente
Ruby, 61 bytes
fuente
PHP,
10098 bytesCorre con
php -r '<code>' <n>
.En cada iteración, cree una copia temporal en bucle desde 1 .. (primer valor eliminado) hasta
$a
esté vacío.Estos dos están quietos y probablemente permanecerán en 100 bytes:
En cada iteración, haga un bucle hacia atrás a través de la matriz reemplazando cada número con un rango.
En cada ciclo de iteración a través de la matriz, aumentar el índice por número anterior y reemplazar cada elemento indexado con un rango
fuente