La séquence du jongleur est décrite comme suit. En commençant par une entrée a 1 , le terme suivant est défini par la relation de récurrence
La séquence se termine lorsqu'elle atteint 1, car tous les termes suivants seraient alors 1.
Tâche
Étant donné une entrée n
supérieure ou égale à 2, écrivez un programme / fonction / générateur / etc. qui génère / renvoie la séquence de jongleur respective. La sortie peut être sous n'importe quelle forme raisonnable. Vous ne pouvez pas utiliser un module intégré qui calcule la séquence du jongleur ou un module intégré qui donne directement le résultat. Vous pouvez supposer que la séquence se termine en 1
.
Cas de test
Input: output
2: 2, 1
3: 3, 5, 11, 36, 6, 2, 1
4: 4, 2, 1
5: 5, 11, 36, 6, 2, 1
Ceci est un golf de code. Le code le plus court en octets gagne.
~5.6*10^7
valeurs (elles s'arrêtent toutes jusqu'à présent).Réponses:
Gelée ,
121110 octetsMerci à @ Sp3000 d'avoir joué au golf sur 1 octet!
Essayez-le en ligne!
Comment ça fonctionne
la source
<code> </code>
au lieu des astuces, il semble afficher un véritable caractère SP. Merci d'avoir fait remarquer cela.Julia,
645048423230 octetsIl s'agit d'une fonction récursive qui accepte un entier et renvoie un tableau flottant.
Nous construisons un tableau en concaténant l'entrée avec le terme suivant de la séquence, calculé comme x à la puissance de sa parité plus 1/2. Cela nous donne soit x 1/2 ou x 1 + 1/2 = x 3/2 . La division entière par 1 obtient la parole. Lorsque la condition x <3 est vraie, l'élément final sera un booléen plutôt qu'une valeur numérique, mais comme le tableau n'est pas de type
Any
, il est converti pour avoir le même type que le reste du tableau.14 octets enregistrés grâce à Dennis!
la source
JavaScript (ES7),
4533 octetsExplication
Approche récursive. Renvoie une chaîne de nombres séparés par des virgules.
Tester
**
non utilisé dans le test de compatibilité du navigateur.Afficher l'extrait de code
la source
**
était pris en charge dans tous les navigateurs.**
support soit supporté en C #.Mathematica,
4039 octetsMerci à Martin Büttner pour avoir économisé 1 octet.
Cas de test
la source
Pyth,
1412 octetsManifestation
Nous commençons par une réduction cumulative,
.u
, qui dans ce cas commence à l'entrée et applique une fonction jusqu'à ce que le résultat se répète, auquel cas il génère tous les résultats intermédiaires.La fonction prend la valeur précédente comme
N
. Il commence par prendre sa racine carrée avec@N2
. Ensuite, il bifurque cette valeur lors de la multiplication parN
avec*B ... N
. Cela crée la liste[N ** .5, (N ** .5) * N]
, les résultats sans étage pour les cas pairs et impairs. Ensuite, le résultat sans étage approprié est sélectionné en l'indexant dans la liste avec@ ... N
. Étant donné que Pyth dispose d'une indexation modulaire, aucune erreur hors limites n'est levée. Enfin, le résultat est terrassé pars
.la source
MATL,
1312 octetsEssayez-le en ligne!
Explication
Merci Luis d'avoir sauvé un octet!
la source
floor
fonction a été remplacée park
, vous pouvez donc l'utiliser au lieu d'Zo
enregistrer 1 octet. (Désolé pour ces changements; vous pouvez voir les résumés des versions ici )Minkolang 0,15 , 25 octets
Essayez-le ici!
Explication
la source
TSQL, 89 octets
L'entrée entre
@N
:Code:
la source
APL,
282416 octetsIl s'agit d'un programme qui accepte un entier et imprime les sorties successives sur des lignes distinctes.
Explication:
Essayez-le en ligne
8 octets enregistrés grâce à Dennis!
la source
Java 7,
8371 octetsJ'ai utilisé à l'origine une
for
boucle typique , mais j'ai dû sauter à travers des cerceaux pour que cela fonctionne correctement. Aprèsavoirvolé l'idée d' emprunter à user81655 pour recurse , je l'ai fait descendre de douze octets.la source
Haskell, 70 octets
Haskell n'a pas de nombre entier
sqrt
intégré, mais je pense qu'il peut y avoir quelque chose de plus court quefloor.sqrt.fromInteger
.la source
Oracle SQL 11.2, 128 octets
Non golfé
L'ajout de MOD (i, 2) à 0,5 est plus court mais il y a un bogue avec POWER (2, 0,5):
donne
la source
R,
5451 octetsEnregistré 3 octets grâce à plannapus.
la source
floor(n^(.5+n%%2))
àn^(.5+n%%2)%/%1
je pense. +1 Néanmoins.CJam, 18 octets
Testez-le ici
Similaire à la réponse MATL de David .
la source
Python 3,
57,45,43, 41 octetsMeilleure solution avec la suggestion de @mathmandan
Cette méthode imprime chaque numéro sur une nouvelle ligne
Solution précédente: réduit à 43 octets après la recommandation de xnor
Vous pouvez appeler ce qui précède en faisant
a(10)
ce qui retourne[10, 3.0, 5.0, 11.0, 36.0, 6.0, 2.0, 1.0]
Ce qui précède affichera les valeurs sous forme de flottants. Si vous les voulez sous forme d'entiers, nous pouvons simplement ajouter 2 octets supplémentaires pour 43 octets:
la source
[n][:n<2]or
, ou comme1/n*[n]or
pour le cas entier.def j(n):print n;n-1and j(n**(.5+n%2)//1)
. (Ou en Python 3,def j(n):print(n);n-1and j(n**(.5+n%2)//1)
c'est 42 octets.) Il imprimera la séquence terme par terme au lieu de collecter les termes dans une liste.n<2or
plutôt quen-1and
TI-Basic, 30 octets
la source
Repeat Ans=1
parWhile log(Ans
et utilisez√(Ans)Ans^remainder(Ans,2
.JavaScript ES6,
109102 octetsJe sais que cela peut être joué au golf. Renvoie une chaîne de nombres séparés par des virgules.
la source
C ++, 122 octets
la source
C #, 62 octets
Inspiré par @ user81655 et @Alex A., j'ai utilisé la récursivité.
la source
Rétine, 144 octets
L'entrée et la sortie sont unaires.
L'avant-dernière ligne contient un espace, et les deux lignes du milieu et la dernière ligne sont vides.
Essayez-le en ligne
Explication
Racine carrée entière dans la rétine , par Digital Trauma
la source
C,
646361 octetsla source
n%2?1.5:0.5
parn%2+0.5
ou.5+n%2
(si C le permet). Sin%2
est vrai,n%2
vaut 1, sinon 0.TI BASIC, 43 octets
Je tire un Thomas Kwa et je réponds à celui-ci sur mon mobile.
Remplacer
sqrt
par le symbole réel sur votre calculatrice. Affiche une liste de nombres séparés par des sauts de ligne, qui est un format raisonnable.la source
JavaScript ES6, 76 octets
Est un générateur nommé
j
. Pour utiliser, régleza = j(<your value>);
. Pour voir la valeur suivante de la séquence, entreza.next().value
.Non golfé:
la source
F # 77 octets
Ne se termine pas à 1, mais continue.
Usage:
Version qui se termine réellement à 1, 100 octets
Non golfé
la source
Perl 5, 34 octets
33, plus 1 pour
-pE
au lieu de-e
Explication
Tout d'abord,
-p
définit la variable$_
égale à l'entrée de stdin. Ensuite, nous commençons un bloc de code:Enfin, les
-p
impressions$_
.De longueur égale
Utilise également
-p
.Cela: imprime
$_
; attribue comme ci-dessus; teste si la valeur de retour desay
(qui est 1), moins la nouvelle valeur de$_
, est 0 et refait le bloc si c'est le cas; puis imprime$_
à la fin.la source
dc,
2221 octetsExpliqué:
Il y a un bug: lorsque l'entrée est
1
, la sortie se compose de deux1
s.la source