Zdefiniujmy „multiplikatywne delty” wartości tak jak:
Operacja odwrotna - mianowicie „multiplikatywna undelta” - zwraca takie wartości, że powyższa operacja daje podane wartości.
Przykład
Podane wartości ogólnym rozwiązaniem operacji „ multiplikatywnej undelty ” jest:
Konkretne rozwiązanie można uzyskać ustawiając na dowolną wartość inną niż zero, na przykład ustawiając otrzymalibyśmy:
Wyzwanie
Twoim zadaniem w tym wyzwaniu jest wdrożenie operacji „ multiplikatywna undelta ”, jak zdefiniowano powyżej.
Zasady
Dane wejściowe to:
- niezerowa wartość
- niepusta lista / tablica / wektor / ... niezerowych „ multiplikatywnych delt ”
Dane wyjściowe są listą / tablicą / wektorem /… wartości takich, że pierwszym elementem jest i dla których wejściowe są „ multiplikatywne delty ”.
Uwaga: jeśli twój język nie obsługuje ujemnych liczb całkowitych, możesz zamienić niezerową na dodatnią .
Przypadki testowe
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]
Odpowiedzi:
Haskell, 8 bajtów
Wypróbuj online!
źródło
APL (Dyalog), 3 bajty
Wypróbuj online!
Jeśli muszę wziąć liczbę po lewej stronie i tablicę po prawej:
-2 dzięki @ H.PWiz
753 bajty×\,
źródło
⊣,⊢
może po prostu być,
×\,
ocenia na funkcję.f←×\
działa na przykład. Btw,(-12 3 -17 1311)
powinno być w twoim permalink(¯12 3 ¯17 1311)
.R , 15 bajtów
Wypróbuj online!
Pełny program Funkcja jest dłuższa (chyba że pozwolono nam „skleić” dane wejściowe razem, aby wbudowana
cumprod
wystarczyła jako pełna odpowiedź):R , 28 bajtów
Wypróbuj online!
źródło
MATL , 3 bajty
Wypróbuj online!
hYp
E o Mátl jest prawdziwe.źródło
JavaScript (ES6), 27 bajtów
Pobiera dane wejściowe jako
(m)(a)
.Wypróbuj online!
źródło
Japt, 3 bajty
Spróbuj
Wyjaśnienie
źródło
Python 3, 39 bajtów
Alternatywne podejście. Zwraca generator.
Wypróbuj online!
źródło
Galaretka , 3 bajty
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 14 bajtów
Wypróbuj online!
FoldList[Times, a0, {x1, x2, ..., xn}]
produkuje pożądaną moc wyjściową.FoldList[Times]
jest formą curry, która wytwarza czystą funkcję, wciąż czekając na jeja0
i{x1, x2, ..., xn}
.źródło
Perl 6 , 9 bajtów
Wypróbuj online!
źródło
Standardowy ML , 32 bajty
Wypróbuj online!
Nie golfowany:
źródło
J ,
65 bajtów-1 bajt dzięki Bubbler
Wypróbuj online!
Wyjaśnienie:
Czasownik diadyczny, lewy argument to
a0
ten sztywny - wektorźródło
*/\@,
działa dokładnie tak samo.Partia, 69 bajtów
Pobiera dane wejściowe zza0 na STDIN i delcie jako argumenty wiersza poleceń.
źródło
Common Lisp, 67 bajtów
Wypróbuj online!
źródło
Łuska , 2 bajty
Wypróbuj online!
Jest to równoważne z odpowiedzią nich w Haskell:
scanl(*)
co oznacza zmniejszenie od lewej za pomocą mnożenia i zwrócenie wszystkich wyników częściowych.źródło
05AB1E ,
53 bajty-2 bajty dzięki @BMO .
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
s
był tam, aby uzyskać inne dane wejściowe. :)s
zamienia się iš
przygotowuje na początku listy. Tak czy inaczej, dzięki za -2Pyth, 6 bajtów
Przetestuj tutaj!
Alternatywnie 7 bajtów:
Sprawdź to tutaj!
Pierwszy pobiera dane wejściowe jako krotkę, drugi przyjmuje dane wejściowe jako dwie oddzielne linie.
Dzięki @Sok za pomoc w uzyskaniu dobrego mapowania i zaoszczędzeniu 1 bajtu.
źródło
R
, jak w*FR._s
- demonstracjaM
założyć, że to zadziała, ale potem wystąpił błąd parsowania cukru - głównie dlatego, że nie pamiętam, jak działa parsowanieF <pf2>
.M
,F
,L
, iR
praca, po prostu próbowałem kilka aż jeden pracował: o)Python 2 , 40 bajtów
Wypróbuj online!
Nieoczekiwanie przejście na Python 3 i korzystanie z generatorów pozwala zaoszczędzić tylko 1 bajt w stosunku do rozwiązania rekurencyjnego.
źródło
PowerShell , 29 bajtów
Wypróbuj online!
Zakłada się, że samo podanie wartości jest w porządku.
Jeśli to nie jest w porządku, to faktycznie buduje listę, a następnie wypycha ją doString, który drukuje w ten sam sposób.
źródło
Output is a list/array/vector/
. Pierwszy jest w porządku.MathGolf ,
65 bajtówWypróbuj online!
Myślę, że może to być 5 bajtów (Zostało to teraz naprawione w najnowszej wersji.\{\o*
), ale\
instrukcja wydaje się nieco nieprzyjemna w przypadku wprowadzania danych.Wyjaśnienie:
źródło
Python 2 , 47 bajtów
Wypróbuj online!
źródło
Węgiel drzewny , 12 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
K (oK) , 9 bajtów
Wypróbuj online!
Łączy pierwszą liczbę z drugim wejściem jako listę, a następnie zwraca kolejne wyniki mnożenia
Przypadki testowe
Wprowadź dane wejściowe po funkcji, jak poniżej, a następnie uruchom, ponieważ nie jestem pewien, jak prawidłowo używać danych wejściowych dla tego języka w TiO
źródło
dc , 13 bajtów
Wypróbuj online!
źródło