Définissons les "deltas multiplicatifs" des valeurs comme:
L'opération inverse - à savoir "undelta multiplicative" - renvoie des valeurs telles que l'opération ci-dessus donne les valeurs données.
Exemple
Valeurs données une solution générale à l'opération "multiplicative undelta" est:
Une solution particulière peut être obtenue en définissant sur une valeur autre que zéro, par exemple en définissant nous obtiendrions:
Défi
Votre tâche pour ce défi est de mettre en œuvre l'opération " undelta multiplicative " telle que définie ci-dessus.
Règles
Les entrées sont:
- une valeur non nulle
- une liste / tableau / vecteur / ... non vide de non-zéro " deltas multiplicatif "
La sortie est une liste / tableau / vecteur / ... de valeurs telles que le premier élément est et pour lequel les " deltas multiplicatifs " sont l'entrée.
Remarque: Si votre langue ne prend pas en charge les nombres négatifs, vous pouvez remplacer non nul par positif .
Cas de test
2 [21] -> [2,42]
1 [1,5,3,2] -> [1,1,5,15,30]
-1 [1,5,3,2] -> [-1,-1,-5,-15,-30]
7 [1,-5,3,2] -> [7,7,-35,-105,-210]
2 [-12,3,-17,1311] -> [2,-24,-72,1224,1604664]
-12 [7,-1,-12,4] -> [-12,-84,84,-1008,-4032]
1 [2,2,2,2,2,2,2,2] -> [1,2,4,8,16,32,64,128,256]
Réponses:
Haskell, 8 octets
Essayez-le en ligne!
la source
APL (Dyalog), 3 octets
Essayez-le en ligne!
Si je dois prendre le nombre à gauche et le tableau à droite:
-2 merci à @ H.PWiz
753 octets×\,
la source
⊣,⊢
peut simplement être,
×\,
évalue à une fonction.f←×\
fonctionne, par exemple. Btw, le(-12 3 -17 1311)
dans votre permalien devrait être(¯12 3 ¯17 1311)
.R , 15 octets
Essayez-le en ligne!
Programme complet. La fonction est plus longue (sauf si nous étions autorisés à «coller» les entrées ensemble, de sorte que la fonction intégrée
cumprod
suffirait comme réponse complète):R , 28 octets
Essayez-le en ligne!
la source
MATL , 3 octets
Essayez-le en ligne!
Le
hYp
e sur MATL est réel.la source
JavaScript (ES6), 27 octets
Prend l'entrée comme
(m)(a)
.Essayez-le en ligne!
la source
Japt, 3 octets
Essayez-le
Explication
la source
Python 3, 39 octets
Approche alternative. Renvoie un générateur.
Essayez-le en ligne!
la source
Gelée , 3 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 14 octets
Essayez-le en ligne!
FoldList[Times, a0, {x1, x2, ..., xn}]
produit la sortie souhaitée.FoldList[Times]
est la forme au curry qui produit une fonction pure attendant toujours sona0
et{x1, x2, ..., xn}
.la source
Perl 6 , 9 octets
Essayez-le en ligne!
la source
ML standard , 32 octets
Essayez-le en ligne!
Non golfé:
la source
J ,
65 octets-1 octet grâce à Bubbler
Essayez-le en ligne!
Explication:
Un verbe
a0
diadique , l'argument de gauche est , le rigth - le vecteurla source
*/\@,
fonctionne exactement de la même manière.Lot, 69 octets
la source
Lisp commun, 67 octets
Essayez-le en ligne!
la source
Husk , 2 octets
Essayez-le en ligne!
Cela équivaut à la réponse de nimi dans Haskell:,
scanl(*)
ce qui signifie réduire de la gauche en utilisant la multiplication et retourner tous les résultats partiels.la source
05AB1E ,
53 octets-2 octets grâce à @BMO .
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source
s
était là pour obtenir l'autre entrée. :)s
est swap etš
précède au début de la liste. Quoi qu'il en soit, merci pour le -2Pyth, 6 octets
Testez celui-là ici!
Alternativement, 7 octets:
Testez-le ici!
Le premier prend l'entrée comme un tuple, le second prend l'entrée comme deux lignes distinctes.
Merci à @Sok de m'avoir aidé à bien mapper et à économiser 1 octet.
la source
R
, comme dans*FR._s
- démonstrationM
supposer que cela fonctionnerait, puis j'ai eu un échec de l'analyse du sucre - principalement parce que je ne me souvenais pas du fonctionnement de l'analyseF <pf2>
.M
,F
,L
et leR
travail, je viens d' essayer un tas jusqu'à ce qu'un travaillé: o)Python 2 , 40 octets
Essayez-le en ligne!
Étonnamment, le passage à Python 3 et l'utilisation de générateurs n'y économisent qu'un octet par rapport à la solution récursive.
la source
PowerShell , 29 octets
Essayez-le en ligne!
Cela suppose que la sortie des valeurs est correcte.
Si cela ne va pas, cela crée en fait la liste, puis la pousse vers toString qui s'imprime de la même manière.
la source
Output is a list/array/vector/
. Donc, le premier va bien.MathGolf ,
65 octetsEssayez-le en ligne!
Je pense que cela pourrait être de 5 octets (Ceci est maintenant corrigé dans la dernière version.\{\o*
) mais l'\
instruction semble un peu décalée lorsqu'il s'agit de l'entrée.Explication:
la source
Python 2 , 47 octets
Essayez-le en ligne!
la source
Fusain , 12 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
K (oK) , 9 octets
Essayez-le en ligne!
Joint le premier nombre à la deuxième entrée sous forme de liste, puis renvoie les résultats successifs de la multiplication
Cas de test
Entrez votre entrée après la fonction comme ci-dessous, puis exécutez, car je ne sais pas comment utiliser correctement l'entrée pour cette langue dans TiO
la source
dc , 13 octets
Essayez-le en ligne!
la source