Definieren wir die "multiplikativen Deltas" von Werten als:
Die umgekehrte Operation - nämlich "multiplikatives Undelta" - gibt Werte zurück, so dass die obige Operation zu den gegebenen Werten führt.
Beispiel
Gegebene Werte Eine allgemeine Lösung für die " multiplikative Undelta " -Operation lautet:
Eine bestimmte Lösung kann erhalten werden, indem auf einen anderen Wert als Null gesetzt wird, beispielsweise durch Setzen von wir erhalten würden:
Herausforderung
Ihre Aufgabe für diese Herausforderung ist es, die oben definierte Operation " multiplikatives Undelta " zu implementieren .
Regeln
Eingaben sind:
- ein Wert ungleich Null
- eine nicht leere Liste / Array / Vektor / ... von nicht multiplizierten " multiplikativen Deltas "
Die Ausgabe ist eine Liste / ein Array / ein Vektor / ... von Werten, so dass das erste Element und für die die " multiplikativen Deltas " die Eingabe sind.
Hinweis: Wenn Ihre Sprache keine negativen Ganzzahlen unterstützt, können Sie Nicht-Null durch positive ersetzen .
Testfälle
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]
Antworten:
Haskell, 8 Bytes
Probieren Sie es online aus!
quelle
APL (Dyalog), 3 Bytes
Probieren Sie es online aus!
Wenn ich die Nummer links und das Array rechts nehmen muss:
-2 danke an @ H.PWiz
753 Bytes×\,
quelle
⊣,⊢
kann nur sein,
×\,
ergibt eine Funktion.f←×\
funktioniert zum Beispiel. Übrigens sollte das(-12 3 -17 1311)
in Ihrem Permalink sein(¯12 3 ¯17 1311)
.R , 15 Bytes
Probieren Sie es online aus!
Volles Programm. Die Funktion ist länger (es sei denn, wir durften die Eingänge "zusammenkleben", so dass die integrierte
cumprod
Antwort als vollständige Antwort ausreichen würde):R , 28 Bytes
Probieren Sie es online aus!
quelle
MATL , 3 Bytes
Probieren Sie es online aus!
Das
hYp
e über MATL ist real.quelle
JavaScript (ES6), 27 Byte
Nimmt Eingabe als
(m)(a)
.Probieren Sie es online aus!
quelle
Japt, 3 Bytes
Versuch es
Erläuterung
quelle
Python 3, 39 Bytes
Alternativer Ansatz. Gibt einen Generator zurück.
Probieren Sie es online aus!
quelle
Gelee , 3 Bytes
Probieren Sie es online aus!
quelle
Wolfram Language (Mathematica) , 14 Bytes
Probieren Sie es online aus!
FoldList[Times, a0, {x1, x2, ..., xn}]
erzeugt die gewünschte Ausgabe.FoldList[Times]
ist die Curryform, die eine reine Funktion erzeugt, die noch auf ihra0
und wartet{x1, x2, ..., xn}
.quelle
Perl 6 , 9 Bytes
Probieren Sie es online aus!
quelle
Standard ML , 32 Bytes
Probieren Sie es online aus!
Ungolfed:
quelle
J ,
65 Bytes-1 Byte dank Bubbler
Probieren Sie es online aus!
Erläuterung:
Ein diadisches Verb, das linke Argument ist
a0
das richtige - der Vektorquelle
*/\@,
funktioniert genauso.Stapel, 69 Bytes
quelle
Common Lisp, 67 Bytes
Probieren Sie es online aus!
quelle
Schale , 2 Bytes
Probieren Sie es online aus!
Dies entspricht der Antwort von nimi in Haskell: Dies
scanl(*)
bedeutet, dass durch Multiplikation von links reduziert und alle Teilergebnisse zurückgegeben werden.quelle
05AB1E ,
53 Bytes-2 Bytes dank @BMO .
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
s
war da, um den anderen Input zu bekommen. :)s
ist Swap undš
steht am Anfang der Liste.Pyth, 6 Bytes
Testen Sie das hier!
Alternativ 7 Bytes:
Testen Sie es hier!
Der erste nimmt die Eingabe als Tupel, der zweite die Eingabe als zwei separate Zeilen.
Vielen Dank an @Sok, der mir geholfen hat, 1 Byte gut zuzuordnen und zu speichern.
quelle
R
, wie in*FR._s
- DemonstrationM
anzunehmen, dass es funktionieren würde, und dann einen Zuckeranalysefehler erhalten - hauptsächlich, weil ich mich nicht daran erinnerte, wie das ParsenF <pf2>
funktioniert hatte.M
,F
,L
, undR
Arbeit, ich habe gerade versucht , ein Bündel , bis man gearbeitet: o)Python 2 , 40 Bytes
Probieren Sie es online aus!
Überraschenderweise spart die Umstellung auf Python 3 und die Verwendung von Generatoren dort nur 1 Byte gegenüber der rekursiven Lösung.
quelle
PowerShell , 29 Byte
Probieren Sie es online aus!
Dies setzt voraus, dass nur die Ausgabe der Werte in Ordnung ist.
Wenn dies nicht in Ordnung ist, wird die Liste erstellt und an toString gesendet, das auf die gleiche Weise gedruckt wird.
quelle
Output is a list/array/vector/
. Das erste ist also in Ordnung.MathGolf ,
65 BytesProbieren Sie es online aus!
Ich denke, das könnten 5 Bytes (Dies ist jetzt in der neuesten Version behoben.\{\o*
) sein, aber der\
Befehl scheint ein wenig anders zu sein , wenn es um Eingaben geht.Erläuterung:
quelle
Python 2 , 47 Bytes
Probieren Sie es online aus!
quelle
Holzkohle , 12 Bytes
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Erläuterung:
quelle
K (oK) , 9 Bytes
Probieren Sie es online aus!
Verbindet die erste Zahl mit der zweiten Eingabe als Liste und gibt dann aufeinanderfolgende Multiplikationsergebnisse zurück
Testfälle
Geben Sie Ihre Eingabe nach der folgenden Funktion ein und führen Sie sie aus, da ich nicht sicher bin, wie Sie die Eingabe für diese Sprache in TiO richtig verwenden sollen
quelle
Gleichstrom , 13 Bytes
Probieren Sie es online aus!
quelle