La plupart des gens ici connaissent le triangle de Pascal. Il est formé de rangées successives, où chaque élément est la somme de ses deux voisins supérieur gauche et supérieur droit. Voici les premières 5
lignes (empruntées au triangle Générer Pascal ):
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Nous allons prendre le triangle de Pascal et y effectuer quelques sommes (hah-ha). Pour une entrée donnée n
, sortez la somme en colonnes des premières n
lignes du triangle de Pascal. Par exemple, pour l'entrée 5
, la sortie serait formée par
1
1 1
1 2 1
1 3 3 1
[+] 1 4 6 4 1
----------------------
1 1 5 4 9 4 5 1 1
Ainsi, la sortie serait [1, 1, 5, 4, 9, 4, 5, 1, 1]
.
Notez que vous n'avez pas nécessairement besoin de générer le triangle de Pascal pour calculer la somme - cela dépend de votre implémentation, si elle est plus courte ou non.
Contribution
Un entier positif unique n
avec n >= 1
dans un format pratique .
Sortie
Le tableau / liste résultant de la somme des n
colonnes des premières lignes du triangle de Pascal, comme indiqué ci-dessus. Encore une fois, dans n'importe quel format approprié.
Règles
- Les sauts de ligne ou les espaces de début ou de fin sont tous facultatifs, tant que les caractères eux-mêmes s'alignent correctement.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Exemples
[input]
[output]
1
[1]
2
[1, 1, 1]
3
[1, 1, 3, 1, 1]
5
[1, 1, 5, 4, 9, 4, 5, 1, 1]
11
[1, 1, 11, 10, 54, 44, 155, 111, 286, 175, 351, 175, 286, 111, 155, 44, 54, 10, 11, 1, 1]
la source
CJam ,
322524 octetsMerci à Luis Mendo d'avoir sauvé 1 octet.
Essayez-le en ligne!
Explication
la source
JavaScript (ES6), 83 octets
L'indexation 1 m'a coûté un octet. Explication:
g(j-1,i-1)+g(j-1,i+1)
calcule récursivement le triangle de Pascal jusqu'à ce qu'il atteigne la première ligne, qui est le cas de base. Pour obtenir les sommes des colonnes, j'utilise le fait quimap
passe en fait un troisième paramètre, il y a donc une étape récursive supplémentaire lorsque c'est le cas.la source
JavaScript (ES6),
9087868482 octetsSauvegardé 3 octets grâce à ETHproductions
Cas de test
Afficher l'extrait de code
la source
Mathematica,
5957 octetsMerci à Martin Ender d'avoir trouvé une économie de deux octets!
Fonction pure prenant une entrée entière positive et renvoyant une liste d'entiers. Produit littéralement toutes les entrées pertinentes du triangle de Pascal et les additionne de manière appropriée.
Soumission précédente (qui est un peu plus facile à lire):
la source
Octave ,
846745 octets22 octets économisés grâce à Neil !
Essayez-le en ligne!
Explication
La
pascal
fonction donne une matrice qui contient les valeurs dans le triangle Pascal:Pour extraire les valeurs souhaitées, nous inversons verticalement (
flip
), gardons la partie triangulaire inférieure (tril
), et inversons à nouveau. Cela donnespdiags
extrait ensuite les diagonales sous forme de colonneset
sum
calcule la somme de chaque colonne, ce qui donne le résultat.la source
@(n)sum(spdiags(flip(tril(flip(pascal(n))))))
?05AB1E ,
3432282524 octets-4 merci à Emigna.
Essayez-le en ligne!
Fondamentalement, il ne fait que générer ceci:
Transposez-le:
Additionne ensuite chaque ligne:
Si un 0 de
®>-Å
début et de fin n'est pas acceptable, il n'est pas corrigé®-Å
pour une pénalité de +1 octet.Résultat pour
50
:la source
-Å0
au lieu de>-Ý0*
devrait fonctionner et€
n'est pas nécessaire à la fin.>F
peut l'êtreƒ
.Å
, malin! J'ai gardé "ctrl + f" pour "liste d'identité" ou quelque chose comme ça sur leinfo.txt
heh ...13 x 5
en5 x 11
? Où sont passés les deux autres colonnes / lignes?PHP , 119 octets
numéros de colonnes de 1 entrée à entrée -1
Essayez-le en ligne!
la source
array_column
est une nouvelle fonction dans cette versionarray_column()
.$x=2*$j++-$i
enregistre 7 octets. Boucler $ j vers le bas au lieu de monter peut sauver 1 (for($j=$i+1;$j--;)
). Et 3 octets supplémentaires peuvent être lus à partir de la sortie.array_column
Gelée , 12 octets
Essayez-le en ligne!
Comment ça marche
la source
Python 3,
201184 octetsla source
Python 2 ,
140137 octetsEssayez-le en ligne! ou Essayez-le en ligne!
Pour les
n=3
départs avec une liste de
n
zéros entourant un -[[0, 0, 0, 1, 0, 0, 0]]
Générez la pyramide complète
Faites une rotation de 90 ° et additionnez chaque ligne, en éliminant la première et la dernière (uniquement des zéros)
la source
Haskell,
118112104 octets614 octets économisés grâce à @nimila source
#
àr#n|d<-0<$[1..n]=d++r++d
.#
, car ce n'est plus récursif: définissezf
asf n=foldl1 z[d++p x++d|x<-[1..n],d<-[0<$[1..n-x]]]
et dump#
.Python 3, 124 caractères
Cela utilise le fait que le triangle de Pascal peut être défini avec des coefficients binomiaux. J'ai essayé de retirer le
abs(x)
et lerange(-n+1,n)
en le faisantrange(n)
puis en l'utilisantlambda l:l[-1:0:-1]+l
mais c'était plus long.C'est aussi ma première fois au golf, donc j'espère que vous pardonnerez tout faux pas.
Le binôme n'est pas le mien et a été pris d' ici .
la source