Определим «мультипликативные дельты» значений в виде:
Обратная операция, а именно «мультипликативная унделта», возвращает значения, так что приведенная выше операция приводит к заданным значениям.
пример
Заданные значения Общее решение операции « мультипликативная унделта »:
Конкретное решение может быть получено путем установки к любому значению, отличному от нуля, например, путем установки мы бы получили:
Вызов
Ваша задача для этой задачи состоит в том, чтобы реализовать операцию « мультипликативная дельта », как определено выше.
правила
Входы:
- ненулевое значение
- непустой список / массив / вектор / ... ненулевых " мультипликативных дельт "
Выходными данными является список / массив / вектор / ... значений, так что первый элемент и для которых " мультипликативные дельты " являются входными данными.
Примечание. Если ваш язык не поддерживает отрицательные целые числа, вы можете заменить ненулевое на положительное .
Контрольные примеры
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]
Ответы:
Haskell, 8 байт
Попробуйте онлайн!
источник
APL (Дьялог), 3 байта
Попробуйте онлайн!
Если мне нужно взять число слева и массив справа:
-2 благодаря @ H.PWiz
753 байта×\,
источник
⊣,⊢
может быть просто,
×\,
оценивает функцию.f←×\
работает, например. Кстати,(-12 3 -17 1311)
ваша постоянная ссылка должна быть(¯12 3 ¯17 1311)
.R 15 байт
Попробуйте онлайн!
Полная программа. Функция длиннее (если нам не разрешили «склеить» входы вместе, так что встроенного
cumprod
было бы достаточно в качестве полного ответа):R , 28 байт
Попробуйте онлайн!
источник
MATL , 3 байта
Попробуйте онлайн!
hYp
Е о MATL реально.источник
JavaScript (ES6), 27 байт
Принимает вход как
(m)(a)
.Попробуйте онлайн!
источник
Japt, 3 байта
Попробуй это
объяснение
источник
Python 3, 39 байт
Альтернативный подход. Возвращает генератор.
Попробуйте онлайн!
источник
Желе , 3 байта
Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 14 байтов
Попробуйте онлайн!
FoldList[Times, a0, {x1, x2, ..., xn}]
производит желаемый результат.FoldList[Times]
это карри форма, которая производит чистую функцию, все еще ожидая своихa0
и{x1, x2, ..., xn}
.источник
Perl 6 , 9 байт
Попробуйте онлайн!
источник
Стандартный ML , 32 байта
Попробуйте онлайн!
Ungolfed:
источник
J ,
65 байтов-1 байт благодаря Bubbler
Попробуйте онлайн!
Объяснение:
Диадический глагол, левый аргумент
a0
, правый - вектористочник
*/\@,
работает точно так же.Пакетный, 69 байт
Принимает вкладa0 на STDIN и дельты в качестве аргументов командной строки.
источник
Common Lisp, 67 байт
Попробуйте онлайн!
источник
Шелуха , 2 байта
Попробуйте онлайн!
Это эквивалентно ответу Ними в Haskell:,
scanl(*)
что означает уменьшение слева с использованием умножения и возврат всех частичных результатов.источник
05AB1E ,
53 байта-2 байта благодаря @BMO .
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
s
чтобы получить другой вход. :)s
- это swap, и онš
стоит в начале списка. В любом случае, спасибо за -2Pyth, 6 байт
Проверьте это здесь!
В качестве альтернативы 7 байтов:
Проверьте это здесь!
Первый принимает входные данные как кортеж, второй принимает входные данные как две отдельные строки.
Спасибо @Sok за помощь в создании карт и сохранении 1 байта.
источник
R
, как*FR._s
- демонстрацияM
предположить, что это сработает, затем получил ошибку разбора сахара - в основном потому, что я не помню, какF <pf2>
работал анализ для .M
,F
,L
иR
работа, я просто попытался кучу , пока один не работал: о)Python 2 , 40 байт
Попробуйте онлайн!
Удивительно, но переход на Python 3 и использование там генераторов экономит всего 1 байт по сравнению с рекурсивным решением.
источник
PowerShell , 29 байт
Попробуйте онлайн!
Это предполагает, что просто вывод значений в порядке.
Если это не хорошо, это фактически создает список, а затем помещает его в toString, который печатает таким же образом.
источник
Output is a list/array/vector/
. Итак, первое в порядке.MathGolf ,
65 байтПопробуйте онлайн!
Я думаю, что это может быть 5 байт (Это теперь исправлено в последней версии.\{\o*
), но\
инструкции, кажется, немного не так, когда дело касается вводаОбъяснение:
источник
Python 2 , 47 байт
Попробуйте онлайн!
источник
Древесный уголь , 12 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
K (ок) , 9 байт
Попробуйте онлайн!
Присоединяет первое число ко второму входу в виде списка, а затем возвращает последовательные результаты умножения
Тестовые случаи
Введите свой ввод после функции, как показано ниже, а затем запустите, так как я не уверен, как правильно использовать ввод для этого языка в TiO
источник
постоянный ток , 13 байт
Попробуйте онлайн!
источник