Le Triangle Seidel est une construction mathématique similaire au Triangle de Pascal, et est connu pour sa connexion aux nombres de Bernoulli.
Les premières lignes sont les suivantes:
1
1 1
2 2 1
2 4 5 5
16 16 14 10 5
16 32 46 56 61 61
Chaque ligne est générée comme suit:
Si le numéro de ligne est pair (indexé 1):
Faire tomber le premier élément de la ligne précédente
Chaque élément suivant est la somme de l'élément précédent et de l'élément au-dessus
Dupliquer le dernier élément
Si le numéro de ligne est impair:
Faire tomber le dernier élément de la ligne précédente
En reculant , chaque élément est la somme de l'élément précédent et de l'élément au-dessus
Dupliquez ce qui est maintenant le premier élément.
Fondamentalement, nous construisons le triangle en zigzag:
1
v
1 > 1
v
2 < 2 < 1
v
2 > 4 > 5 > 5
Pour plus d'informations, consultez la page Wikipedia sur les numéros de Bernoulli.
Le défi:
Étant donné n
, soit en tant qu'argument de fonction, soit à partir de STDIN, imprimez ou renvoyez la n
troisième ligne du triangle Seidel ou les premières n
lignes. Vous pouvez utiliser l'indexation 0 ou 1.
Vous n'avez pas besoin de gérer les entrées négatives ou non entières (ni 0, si elles sont indexées sur 1). Vous n'avez pas besoin de gérer des sorties supérieures à2147483647 = 2^31 - 1
Comme il s'agit de code-golf, faites-le en aussi peu d'octets que possible.
Exemples:
Dans ces exemples, la valeur de retour est la n
e ligne, indexée sur 0.
Input -> Output
0 1
1 1 1
2 2 2 1
6 272 272 256 224 178 122 61
13 22368256 44736512 66750976 88057856 108311296 127181312 144361456 159575936 172585936 183194912 191252686 196658216 199360981 199360981
la source
Réponses:
Brain-Flak , 66 octets
Essayez-le en ligne!
La ligne est indexée sur 0.
la source
JavaScript (SpiderMonkey) , 67 octets
Ce code abuse de la
sort()
méthode et ne fonctionne pas sur tous les moteurs.Les lignes sont indexées 0.
Essayez-le en ligne!
Comment?
Nous inversons conditionnellement un tableau en utilisant la
sort()
méthode avec une fonction de rappel qui ignore ses paramètres et retourne 0 ou un entier positif. N'essayez pas ca a la maison! Cela ne fonctionne de manière fiable que sur SpiderMonkey.Notez que V8 utilise probablement différents algorithmes de tri en fonction de la longueur du tableau (moins ou plus de 10 éléments).
Commenté
la source
sort()
dans ce moteur. J'ai ajouté une explication.Perl 6 , 52 octets
Essayez-le en ligne!
la source
Haskell ,
898782 octetss
Imprime simplement les lignes dans l'ordre zig-zag, la fonction anonyme sur la première ligne inverse la moitié des lignes.Merci à @nimi d'avoir économisé 5 octets!
Essayez-le en ligne!
la source
Gelée , 12 octets
Essayez-le en ligne!
la source
⁸
Python 3 ,
9891 octetsEssayez-le en ligne!
Le passage à une numérotation des lignes basée sur 0 a permis d'économiser 7 octets.
la source
Julia 0,6 , 85 octets
Essayez-le en ligne!
Il s'agit d'une solution récursive dans Julia. Notez qu'il a une indexation basée sur 1. D'où les tests.
Version non golfée, pour comprendre la logique:
En bonus, voici une version non récursive, mais elle est plus longue:
la source
Python 2 ,
10397 octetsEssayez-le en ligne!
Version non récursive (plus facile à lire):
Python 2 , 106 octets
Essayez-le en ligne!
Certes, mieux est possible!
la source
Python 3 , 91 octets
Essayez-le en ligne!
la source
import
et*