Le triangle de Pascal est généré en commençant par 1
et en ayant chaque ligne formée à partir d'additions successives. Ici, au lieu de cela, nous allons former un triangle en alternant multiplication et addition.
Nous commençons la rangée 1
avec juste un solitaire 1
. Par la suite, l'addition se fait sur les lignes impaires et la multiplication se fait sur les lignes paires (indexées 1). Lorsque vous effectuez l'étape d'addition, supposez que les espaces à l'extérieur du triangle sont remplis de 0
s. Lorsque vous effectuez l'étape de multiplication, supposez que l'extérieur est rempli de 1
s.
Voici le triangle complet jusqu'à 7 lignes. Le *
ou +
sur la gauche indique quelle étape a été effectuée pour générer cette ligne.
1 1
2 * 1 1
3 + 1 2 1
4 * 1 2 2 1
5 + 1 3 4 3 1
6 * 1 3 12 12 3 1
7 + 1 4 15 24 15 4 1
Défi
Étant donné l'entrée n
, sortez la n
e ligne de ce triangle.
Règles
- Vous pouvez choisir d'indexer à la place, mais sachez ensuite que les lignes d'addition et de multiplication doivent basculer, de sorte que le même triangle exact soit généré comme ci-dessus. Veuillez indiquer dans votre soumission si vous choisissez de le faire.
- L'entrée et la sortie peuvent être supposées correspondre au type d'entier natif de votre langue.
- L'entrée et la sortie peuvent être données dans n'importe quel format pratique .
- 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) gagne.
Exemples
Affichage de deux exemples possibles de sortie sur plusieurs: une liste ou une chaîne séparée par des espaces.
4
[1, 2, 2, 1]
8
"1 4 60 360 360 60 4 1"
la source
n
e ligne.Réponses:
Pascal ,
249247233 octetsEh bien, c'est le triangle alternatif de Pascal .
1 octet enregistré grâce à @ Mr.Xcoder
Essayez-le en ligne!
la source
Python 2 ,
9793868178 octets-4 octets grâce à Rod. -10 octets grâce à Halvard Hummel.
0 indexé.
Essayez-le en ligne!
la source
map([int.__add__ ,int.__mul__][i%2],[i%2]+a,a+[i%2])
devrait fonctionner (non testé)Gelée ,
1712 octetsIl s'agit d'un programme complet (ou lien niladique) qui prend en entrée STDIN.
Essayez-le en ligne!
Comment ça marche
la source
Python 2 ,
96 8987 octets2 octets Merci à M. Xcoder:
s=[1]
Un peu différent de la réponse totalement humaine
Essayez-le en ligne!
la source
[1]
.CJam , 25 octets
0 indexé.
Essayez-le en ligne!
Explication
Il s'agit d'un bloc anonyme qui prend le numéro de la pile et laisse le résultat sur la pile.
la source
2%!
devrait pousser 1 si pair et 0 si impair, non?Mathematica, 92 octets
Essayez-le en ligne! (pour travailler les mathématiques, "Tr" est remplacé par "Total")
la source
Haskell ,
7672 octetsSolution indexée 0:
Essayez-le en ligne!
Explication
p
définit récursivement le triangle alternatif, le cas de base / premier élément de celui-ci est[1]
Il construit ensuite le triangle en prenant la ligne précédente (
l
). Pour savoir quoi en faire, nous devons garder une trace de l'opérateur correct (o
) et de l'élément neutre correspondant (e
):À partir de cela, créez la nouvelle ligne en dupliquant la ligne et pour une copie, nous ajoutons l'élément neutre, les compressons avec l'opérateur et ajoutons un 1:
la source
R ,
10898 octets-10 octets en remplaçant le signe de multiplication réel par un signe plus. S'il vous plaît, pardonnez-moi.
Essayez-le en ligne!
Assez satisfait de la méthode générale (première fois que j'ai aliasé une primitive), mais je suis sûr qu'il y a encore du golf à faire, en particulier avec la gestion maladroite des cas où n <3, ce qui conduit à beaucoup de passe-partout.
la source
`*`=`+`
! Plutot malin. Le reste de mes améliorations ne sont que des techniques de golf standard, que je serais heureux d'expliquer à votre demande :)n<3
Husk ,
1716 octetsEssayez-le en ligne!
Une solution indexée 1.
Explication
La première ligne est la fonction principale, qui appelle la fonction d'assistance sur la deuxième ligne. La fonction d'assistance est généralement appelée avec
₁
, mais dans ce cas, j'utilise la fonction d' étiquettes débordantes de Husk: si vous faites référence à une ligne N dans un programme avec M <N lignes, vous obtenez la ligne N mod M avec la fonction de modification M / N s'y est appliqué. La deuxième fonction de modification estflip
, donc j'utilise₅
pour inverser les arguments de la fonction d'assistance sans coût supplémentaire en octets.Voici la fonction d'assistance.
Voici la fonction principale.
la source
C # (.NET Core) ,
143134128 octets-4 octets grâce à Phaeze
-5 octets grâce à Zac Faragher
-6 octets grâce à Kevin Cruijssen
Essayez-le en ligne!
Explication:
la source
var b=new[]{1};
et le compilateur déterminera le type de tableau pour vous.int[]b={1};
- 11 octets contre 20 tels quels ou 16 comme dans la suggestion de @Phaezen=>{int[]b={1},c;for(int i=0,j;++i<n;b=c)for(c=new int[i+1],c[0]=c[i]=1,j=0;++j<i;)c[j]=i%2<1?b[j-1]+b[j]:b[j-1]*b[j];return b;}
. J'ai combinéc
comme çaint[]b={1},c;
; raccourcii%2==0
ài%2<1
; Et supprimé les supports de la boucle en mettant tout à l'intérieur.Python 2 , 83 octets
Donnez un peu d'amour à l'
exec
index 0
Essayez-le en ligne!
la source
Pyth , 22 octets
Des tonnes d'octets enregistrées grâce à @FryAmTheEggman ! La solution initiale est ci-dessous.
Suite de tests complète (indexée 0).
Pyth ,
40 38 3635 octetsCela semble
waaaaaaaay tropraisonnablement long. Les suggestions sont les bienvenues.Testez la suite ou essayez-la en ligne!
la source
u
(mais je n'ai pas pu le comprendre). Merci!J , 32 octets
Essayez-le en ligne!
la source
Perl 5 , 111 + 2 (-na) = 113 octets
Essayez-le en ligne!
la source
Mathematica, 70 octets
Essayez-le dans le bac à sable Wolfram ! Cela ne fonctionne malheureusement pas en mathématiques. Il est indexé 0.
Explication:
Partition[#,2,1,{-1,1},{}]
prend une liste et retourne toutes les sous-listes à deux éléments, plus les listes à 1 élément pour le début et la fin - par exemple,{1,2,3,4}
devient{{1}, {1,2}, {2,3}, {3,4}, {4}}
.PadRight[{},#,{1##&,Plus}]
fait une liste alternée de1##&
(effectivementTimes
) etPlus
, dont la longueur est le numéro d'entrée. PuisFold
applique à plusieurs reprises la fonction de partition avec lesPlus
es et lesTimes
es qui lui sont appliqués, pour faire les lignes du triangle.la source
Rubis ,
8382 octetsEssayez-le en ligne!
Ceci est indexé 0.
la source
Raquette , 116 octets
Essayez-le en ligne!
la source
TI-Basic (TI-84 Plus CE), 100 octets
1-indexé, invite l'utilisateur à entrer et imprime une liste contenant la
n
e ligne du triangle alternatif de Pascal.En boucle: L M est la ligne actuelle et L L est la ligne précédente.
TI-Basic est un langage tokenisé . Tous les jetons utilisés ici sont des jetons d'un octet.
Je pense que je peux jouer au golf plus loin en modifiant M en place depuis la fin.
Explication:
la source
JavaScript (ES6),
716966 octetsEssayez-le en ligne!
0 indexé.
-3 octets par @Arnauld
la source
i--?n%2?v*p[i]:v+p[i]