Définition
Définissez le n ème tableau de la séquence CURR comme suit.
Commencez par le tableau singleton A = [n] .
Pour chaque entier k dans A , remplacez l'entrée k par k nombres naturels, en comptant de 1 à k .
Répétez l'étape précédente n - 1 fois de plus.
Par exemple, si n = 3 , nous commençons par le tableau [3] .
Nous remplaçons 3 par 1, 2, 3 , ce qui donne [1, 2, 3] .
Nous remplaçons maintenant 1 , 2 et 3 par 1 ; 1, 2 et 1, 2, 3 (resp.), Donnant [1, 1, 2, 1, 2, 3] .
Enfin, nous effectuons les mêmes remplacements que dans l'étape précédente pour les six entiers du tableau, ce qui donne [1, 1, 1, 2, 1, 1, 2, 1, 2, 3] . Il s'agit du troisième tableau CURR.
Tâche
Écrivez un programme d'une fonction qui, étant donné un entier strictement positif n en entrée, calcule le n ème tableau CURR.
La sortie doit être une sorte de liste plate (et un tableau renvoyé par une fonction, une représentation sous forme de chaîne de la syntaxe du tableau de votre langue, séparée par des espaces, etc.).
C'est du code-golf . Que le code le plus court en octets gagne!
Cas de test
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]
) plutôt que comme un entier?Réponses:
Gelée, 3 octets
Essayez-le en ligne
Explication
la source
Python, 50 octets
Abus de portée! Par exemple, pour
i=3
, la chaîne à évaluer se développe.D'une certaine manière, malgré l'utilisation de la variable d'entrée de fonction
i
pour tout, Python distingue chaque index d'itération comme appartenant à une portée distincte comme si l'expression étaitavec
i
l'entrée de la fonction.la source
eval
, évidemment, le code lui-même doit être porté, mais je pensais que vous pouviez supposer que de toute façon.05AB1E,
63 octetsExpliqué
Essayez-le en ligne
Sauvegardé 3 octets grâce à @Adnan
la source
DFL
est 3 octets plus court :)Rétine , 33 octets
Entrée et sortie unaires.
Essayez-le en ligne!
Même si je n'ai pas utilisé le formulaire fermé pour le défi associé, l'adaptation de cette réponse a été étonnamment délicate.
la source
+%(M!&
est la plus longue balise que j'aurais jamais vue.Python 2, 82 octets
Ce n'est pas la solution la plus courte, mais elle illustre une méthode intéressante:
2^(2*n-1)
nombres en binairen
ceuxla source
En fait, 9 octets
Essayez-le en ligne!
Explication:
Merci à Leaky Nun pour un octet et inspiration pour 2 autres octets.
la source
;#@"♂R♂i"*ƒ
enregistre un octet;#@`♂R♂i`n
sauve un autre!C #, 128 octets
la source
using static System.Linq.Enumerable
, vous pouvez le faire: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 octets
Tester:
Explication:
+⍵
: en commençant par⍵
,⍣⍵
: procédez comme suit⍵
:⍳¨∘∊
: aplatir l'entrée, puis générer une liste [1..N] pour chaque N dans l'entrée∊
: aplatir le résultat de cettela source
{(∊⍳¨)⍣⍵⊢⍵}
{(∊∘(⍳¨))⍣⍵+⍵}
, puis pensé: comment puis-je me débarrasser de ces accolades?CJam, 14 octets
Testez-le ici.
Explication
la source
Mathematica,
2726 octets1 octet enregistré avec une certaine inspiration de la réponse d'Essari.
Assez simple: pour l' entrée ,
x
nous commençons par{x}
et appliquer ensuite laRange
luix
fois (Range
est ceListable
qui signifie qu'il applique automatiquement aux entiers à l' intérieur des listes imbriquées arbitrairement). À la fin,Flatten
le résultat.la source
Clojure, 59 octets
Explication:
Un moyen très simple de résoudre le problème. Travailler de l'intérieur:
la source
Python 3,
7574 octetsIl s'agit simplement d'une traduction simple de la description du problème en code.
Edit: enregistré un octet grâce à @Dennis.
la source
print
pouvez sortir duexec
.[k]
pour une raison quelconque. J'ai renoncé à essayer de comprendre s'il s'agissait d'un problème de portée ou autre chose.R,
6049 octetsUtilisation assez simple de
unlist
etsapply
.Merci à @MickyT pour avoir économisé 11 octets
la source
seq
pour réduire le nombre d'octetsphp 121
Pas vraiment beaucoup de trucs derrière celui-ci. L'aplatissement d'un tableau en php n'est pas court, il est donc nécessaire de le construire à plat en premier lieu
la source
<?
ou 6 octets avec-r
et sans balise.Haskell, 33 octets
Merci à nimi d'avoir enregistré un octet.
Une version sans point est plus longue (35 octets):
la source
iterate(>>= \a->[1..a])
pour un octet de moins.JavaScript (Firefox 30-57),
6360 octetsPort de la réponse Python @ xnor.
la source
SyntaxError: missing : in conditional expression
) et Babel (Unexpected token (1:21)
). Qu'est-ce que je fais mal?)
s'est glissé dans cette version.J, 18 octets
Approche directe basée sur le processus décrit dans le défi.
Usage
Explication
la source
Pyth, 8 octets
Essayez-le en ligne!
la source
Gelée, 7 octets
Rapide, avant que Dennis ne réponde (jk)
Essayez-le en ligne!
la source
F #, 63 octets
Renvoie une fonction anonyme prenant n en entrée.
Remplace chaque entrée k dans A par [1..k], répète le processus n fois, en commençant par A = [n].
la source
Swift 3, 58 octets
Destiné à fonctionner directement dans une aire de jeux, avec n réglé sur l'entrée:
Non golfé, avec la notation la plus courte à la main inversée:
la source
Java, 159 octets
Procédure
Usage
Exemple de sortie:
la source
Python 2,
696866 octetsEdit: 1 octet enregistré grâce à @xnor. Enregistré 2 octets grâce à @ Dennis ♦.
la source
exec
. En Python 2, c'est un mot-clé, pas une fonction. Je compte 68 octets btw.Utilitaires Bash + GNU, 49
Fonctions récursives canalisées FTW!
n
est transmis sur la ligne de commande. La sortie est séparée par des sauts de ligne.L'utilisation des
dd
statistiques de causes à envoyer à STDERR. Je pense que c'est OK, mais sinon,dd
peut être remplacé parcat
au coût de 1 octet supplémentaire.la source
{...;}
par(...)
pour enregistrer un octet.Perl 5, 53 octets
Un sous-programme:
Voyez-le en action comme
la source
Rubis, 61 octets
la source
PHP,
10098 octetsCourez avec
php -r '<code>' <n>
.Dans chaque itération, créez une copie temporaire en boucle de 1 .. (première valeur supprimée) jusqu'à
$a
soit vide.Ces deux sont toujours et resteront probablement à 100 octets:
Dans chaque boucle d'itération en arrière à travers le tableau en remplaçant chaque nombre par une plage.
Dans chaque boucle d'itération à travers le tableau, augmentez l'index par le numéro précédent et remplacez chaque élément indexé par une plage
la source