Tout le monde connaît la séquence de Fibonacci:
vous prenez un carré, vous y attachez un carré égal, puis vous attachez plusieurs fois un carré dont la longueur du côté est égale à la plus grande longueur du rectangle obtenu.
Le résultat est une belle spirale de carrés dont la suite de nombres est la suite de Fibonacci :
Mais si nous ne voulions pas utiliser de carrés?
Si nous utilisons les triangles équilatéraux - au lieu de carrés - de la même manière, nous obtenons une spirale de triangles tout aussi belle et une nouvelle séquence: la séquence de Padovan , alias A000931 :
Tâche:
Étant donné un entier positif, , la sortie , le ème terme de la séquence de Padoue OU les premiers termes.
Supposons que les trois premiers termes de la séquence sont tous égaux à . Ainsi, la séquence commencera comme suit:
Contribution:
Tout entier positif
Une entrée invalide ne doit pas être prise en compte
Sortie:
Le ième terme de la suite Padovan OU les premiers termes de la séquence Padovan.N
Si les premiers termes sont imprimés, la sortie peut être celle qui convient (liste / tableau, chaîne multiligne, etc.)
Peut être soit indexé ou indexé
Cas de test:
(indexé 0, ème terme)
Input | Output
--------------
0 | 1
1 | 1
2 | 1
4 | 2
6 | 4
14 | 37
20 | 200
33 | 7739
(1 indexé, premiers termes)
Input | Output
--------------
1 | 1
3 | 1,1,1
4 | 1,1,1,2
7 | 1,1,1,2,2,3,4
10 | 1,1,1,2,2,3,4,5,7,9
12 | 1,1,1,2,2,3,4,5,7,9,12,16
Règles:
C'est du code-golf : moins il y a d'octets, mieux c'est!
Les failles standard sont interdites.
14
(0-indexé) est affiché en sortie28
alors que je crois que cela devrait céder37
a_0=1, a_1=0, a_2=0
. Il finit par être décalé un peu parcea_5=a_6=a_7=1
Réponses:
Gelée , 10 octets
Essayez-le en ligne!
1 indexé. Calcule le plus grand élément de: où la matrice binaire est commodément calculée comme :⎡⎣⎢010001110⎤⎦⎥n ⎡⎣⎢isprime(0)isprime(3)isprime(6)isprime(1)isprime(4)isprime(7)isprime(2)isprime(5)isprime(8)⎤⎦⎥
(Ceci est une coïncidence totale.)
la source
Oasis , 5 octets
ième terme indexé par 0
Essayez-le en ligne!
Explication
la source
Gelée ,
10 98 octetsUn lien monadique acceptant
n
(indexé sur 0) qui cèdeP(n)
.Essayez-le en ligne!
Comment?
ImplémenteP(n)=∑⌊n2⌋i=0(i+1n−2i)
Et voici un "twofer"
... une méthode totalement différente également pour 8 octets (celui-ci est indexé sur 1, mais beaucoup plus lent):
la source
Haskell , 26 octets
Essayez-le en ligne! Affiche le nième terme indexé à zéro.
Je pensais que la solution "évidente" récursive ci-dessous serait imbattable, mais ensuite j'ai trouvé ceci. Cela ressemble à l'expression classique de Golfy
l=1:scanl(+)1l
pour la liste infinie de Fibonacci, mais ici la différence entre les éléments adjacents est le terme 4 positions en arrière. Nous pouvons écrire plus directementl=1:1:zipWith(+)l(0:l)
, mais c'est plus long.Si ce défi permettait la sortie d'une liste infinie, nous pourrions couper la première ligne et avoir 20 octets.
27 octets
Essayez-le en ligne!
la source
Python 2 , 30 octets
Essayez-le en ligne!
Retourne le nième terme indexé à zéro. Sorties
True
pour 1.la source
Wolfram Language (Mathematica) , 33 octets
1-indexé, retourne le nième terme
Essayez-le en ligne!
la source
Octave / MATLAB,
3533 octetsAffiche les n premiers termes.
Essayez-le en ligne!
Comment ça marche
Fonction anonyme qui implémente un filtre récursif .
'cbaa'-98
est une forme plus courte à produire[1 0 -1 -1]
.2:n<5
est une forme plus courte à produire[1 1 1 0 0 ··· 0]
( n −1 termes).filter(1,[1 0 -1 -1],[1 1 1 0 0 ··· 0])
passe l'entrée à[1 1 1 0 0 ··· 0]
travers un filtre à temps discret défini par une fonction de transfert avec coefficient de numérateur1
et coefficient de dénominateur[1 0 -1 -1]
.la source
J , 22 octets
-2 octets grâce à ngn et Galen
formulaire fermé, 26 octets
Essayez-le en ligne!
itératif, 22 octets
Essayez-le en ligne!
la source
1:
->#
: Essayez-le en ligne!1:
->1
. "adverse" fonctionne avec un nom à droite, apparemmentRetina ,
4742 bytesEssayez-le en ligne! Affiche les premiers
n
termes sur des lignes séparées. Explication:Remplacez l'entrée par les termes pour
-2
,-1
et0
.Générez les
n
termes suivants à l'aide de la relation de récurrence.*_
voici short pour$&*_
lequel convertit le (premier) chiffre du match en unaire, alors que$1*
short est utilisé pour$1*_
convertir le nombre du milieu en unaire. Le$.(
renvoie la somme décimale de ses arguments unaires, c'est-à-dire la somme des premier et deuxième nombres.Jeter les six premiers caractères, c’est-à-dire les trois premières lignes.
la source
Cubix , 20 octets
Ceci est 0 indexé et sort le N ème terme
Essayez-le en ligne!
S'enroule sur un cube de côté 2
Regarde le courir
I010
- Initie la pile+p?
- Ajoute le haut de la pile, tire le compteur du bas de la pile et teste/;UO@
- Si le compteur est 0, réfléchissez sur la face supérieure, supprimez le TOS, faites demi-tour, sortez et arrêtez\(sqq;W
- Si le compteur est positif, réfléchissez, décrémentez le compteur, échangez le TOS, appuyez deux fois de haut en bas, supprimez le TOS et replacez la voie dans la boucle principale.la source
Python 2 ,
5648 octetsEssayez-le en ligne!
Retourne la nième valeur, indexée à 0.
la source
Perl 6 , 24 octets
Essayez-le en ligne!
Une jolie séquence standard générée, avec chaque nouvel élément généré par l'expression
* + * + !*
. Cela ajoute le troisième élément précédent, le deuxième élément précédent et la négation logique de l'élément précédent, qui est toujoursFalse
, numériquement nul.la source
05AB1E , 8 octets
Essayez-le en ligne!
Ours avec moi, je n'ai pas joué au golf depuis un moment. Je me demande s’il existe un substitut plus courtn
1Ð)
qui fonctionne dans ce cas (j’ai essayé1D)
,3Å1
etc., mais aucun d’entre eux ne sauvegarde des octets). Affiche les premiers termes de la séquence. Ou, sans le , cela produirait un flux infini de termes de la séquence.£
Comment?
la source
1Ð)
soit 2 octets tbh. Je peux penser à six alternatives différentes de 3 octets , mais pas de 2 octets.APL (Dyalog Unicode) ,
201817 octets SBCSCe code est indexé 1. C'est le même nombre d'octets pour obtenir les
n
éléments de la séquence Padovan, car vous devez supprimer les derniers membres supplémentaires. C'est également le même nombre d'octets pour obtenir l'indexation 0.Edit: -2 octets grâce à ngn. -1 octet grâce à ngn
Essayez-le en ligne!
Explication
la source
K (ngn / k) ,
2420 octets-4 octets grâce à ngn!
Essayez-le en ligne!
0 indexé, premiers N termes
la source
f[x-2]+f[x-3]
->+/o'x-2 3
(o
est "se reproduit")1:
->#
dans la solution jCode machine x86 32 bits, 17 octets
Démontage:
Il est indexé par 0. L’initialisation est obtenue de manière commode en calculant eax * 0. Le résultat de 128 bits est 0 et le résultat est edx: eax.
Au début de chaque itération, l'ordre des registres est ebx, eax, edx. Je devais choisir le bon ordre pour tirer parti du codage de l'
xchg eax
instruction - 1 octet.J'ai dû ajouter 4 au compteur de boucle afin de laisser la sortie atteindre
eax
, qui contient la valeur de retour de la fonction dans lafastcall
convention.Je pourrais utiliser une autre convention d'appel, qui n'exige ni sauvegarde ni restauration
ebx
, mais quifastcall
est amusante quand même :)la source
Gelée , 11 octets
Essayez-le en ligne!
0 indexé.
la source
Lua 5.3,
4948 octetsEssayez-le en ligne!
Vanilla Lua ne contraint pas les booléens aux chaînes (même les
tonumber(true)
retoursnil
), vous devez donc utiliser un opérateur pseudo-ternaire. Cette version est indexée 1, comme l’ensemble de Lua. La1or
partie doit être changée1 or
en Lua 5.1, ce qui a une manière différente d’exprimer les nombres.la source
Ruby , 26 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 23 octets
Implémente la définition récursive de A000931 , mais avec , comme spécifié dans le challenge.a(0)=a(1)=a(2)=1
Retourne le ème terme, indexé par 0.N
Essayez-le en ligne!
la source
true
revient au même que1
si le reste du résultat est en chiffres.Japt
-N
, 12 octetsL'essayer
la source
TI-BASIC (TI-84), 34 octets
0-indexé ième terme de la suite.N
L'entrée est en
Ans
.La sortie est
Ans
entrée et est automatiquement imprimée.Je pensais que suffisamment de temps s'était écoulé et que plusieurs réponses avaient été postées, parmi lesquelles de nombreuses autres ont dépassé cette réponse.Exemple:
Explication:
la source
Pyth, 16 octets
Ceci définit la fonction
y
. Essayez-le ici!Voici une solution plus amusante, bien que sa longueur soit de 9 octets. les octets pourraient être rasés cependant.
Ceci utilise la définition donnée par David Callan à la page OEIS: "a (n) = nombre de compositions de n en parties impaires et> = 3." Essayez-le ici! Il prend directement les entrées au lieu de définir une fonction.
la source
y-b2y-b3
pourrait peut-être être refactored avec soit bifurcate ouL
? Bien que déclarer un tableau de 2 éléments soit coûteux.yL-Lb2,3
est plus long :(+y-b2y-b3
avecsmy-bdhB2
ce qui est la même quantité d'octets;hB2
résultats dans le tableau[2, 3]
hB2
. Dommage que ce soit le même nombre d'octets.d
la carte.Java, 41 octets
Impossible d'utiliser un lambda (erreur d'exécution). Port de cette réponse Javascript
TIO
la source
R + pryr ,
3836 octetsFonction récursive à zéro index.
Essayez-le en ligne!
Merci à @ Giuseppe pour avoir signalé deux octets manifestement inutiles.
la source
pryr
cette langue, la langue utilisée devraitR + pryr
être 36 octets.C (clang) ,
4133 octetsEssayez-le en ligne!
la source
C # (compilateur interactif Visual C #) , 34 octets
Essayez-le en ligne!
la source
Perl 5 , 34 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 26 octets
Essayez-le en ligne!
la source
Pari / GP , 28 octets
0 indexé.
Essayez-le en ligne!
Pari / GP , 35 octets
1 indexé.
Essayez-le en ligne!
La fonction génératrice de la séquence est .1+x1−x2−x3
la source