Мультипликативный унделта


9

Определим «мультипликативные дельты» значений[a0,aN,] в виде:

[a1/a0,,ai+1/ai,,aN/aN1]

Обратная операция, а именно «мультипликативная унделта», возвращает значения, так что приведенная выше операция приводит к заданным значениям.

пример

Заданные значения [1,5,3,2]Общее решение операции « мультипликативная унделта »:

[a0,a01a1,a15a2,a23a3,a32a4]

Конкретное решение может быть получено путем установки a0 к любому значению, отличному от нуля, например, путем установки a0:=1 мы бы получили:

[1,1,5,15,30]

Вызов

Ваша задача для этой задачи состоит в том, чтобы реализовать операцию « мультипликативная дельта », как определено выше.

правила

Входы:

  • ненулевое значение a0
  • непустой список / массив / вектор / ... ненулевых " мультипликативных дельт "

Выходными данными является список / массив / вектор / ... значений, так что первый элемент a0и для которых " мультипликативные дельты " являются входными данными.

Примечание. Если ваш язык не поддерживает отрицательные целые числа, вы можете заменить ненулевое на положительное .

Контрольные примеры

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]

Можем ли мы взять один список длиной 1 + количество дельт, где первый элемент - это ₀?
Адам

@ Adám: Я собираюсь сказать нет, потому что это изменит вещи для существующих ответов.
მოიმო

Ответы:



9

APL (Дьялог), 3 байта

×\∊

Попробуйте онлайн!

Если мне нужно взять число слева и массив справа:

-2 благодаря @ H.PWiz

7 5 3 байта

×\,


2
⊣,⊢может быть просто,
H.PWiz

@ H.PWiz спасибо, мой молчаливый очень слабый
Quintec

Вам не нужны парены; ×\,оценивает функцию.
Деннис

@ Денис, похоже, не работает, к сожалению
Quintec

Вам не нужно считать парены, потому что они не нужны в некоторых ситуациях. f←×\работает, например. Кстати, (-12 3 -17 1311)ваша постоянная ссылка должна быть (¯12 3 ¯17 1311).
Деннис











1

Пакетный, 69 байт

@set/pa=
@echo %a%
@for %%d in (%*) do @set/aa*=%%d&call echo %%a%%

Принимает вклад a0 на STDIN и дельты в качестве аргументов командной строки.




1

05AB1E , 5 3 байта

šηP

-2 байта благодаря @BMO .

Попробуйте онлайн или проверьте все контрольные примеры .

Объяснение:

š      # Prepend the (implicit) input-integer at the start of the (implicit) input-list
       #  i.e. -12 and [7,-1,-12,4] → ["-12",7,-1,-12,4]
 η     # Prefixes of this new list
       #  i.e. ["-12",7,-1,-12,4]
       #   → [["-12"],["-12",7],["-12",7,-1],["-12",7,-1,-12],["-12",7,-1,-12,4]]
  P    # Take the product of each inner list (and output implicitly)
       #  i.e. [["-12"],["-12",7],["-12",7,-1],["-12",7,-1,-12],["-12",7,-1,-12,4]]
       #   → [-12,-84,84,-1008,-4032]

1
Нет, sчтобы получить другой вход. :) s- это swap, и он šстоит в начале списка. В любом случае, спасибо за -2
Кевин Круйссен

1

Pyth, 6 байт

*FR._s

Проверьте это здесь!

В качестве альтернативы 7 байтов:

.u*NYEQ

Проверьте это здесь!

Первый принимает входные данные как кортеж, второй принимает входные данные как две отдельные строки.

Спасибо @Sok за помощь в создании карт и сохранении 1 байта.


1
Вы можете сохранить байт, реализовав карту во втором растворе , как R, как *FR._s- демонстрация
Sok

@ Сок Хороший улов! Я пытался Mпредположить, что это сработает, затем получил ошибку разбора сахара - в основном потому, что я не помню, как F <pf2>работал анализ для .
Стивен Х.

Я буду честен, я не очень понимаю , как вложенные M, F, Lи Rработа, я просто попытался кучу , пока один не работал: о)
Sok


1

PowerShell , 29 байт

param($a,$b)$a;$b|%{($a*=$_)}

Попробуйте онлайн!

Это предполагает, что просто вывод значений в порядке.

> .\scratch.ps1 1 (1,5,3,2)
1
1
5
15
30

Если это не хорошо, это фактически создает список, а затем помещает его в toString, который печатает таким же образом.

param($a,$b)$c=,$a;$b|%{$c+=$_*$c[-1]};$c #41 bytes

Правила являются: Output is a list/array/vector/. Итак, первое в порядке.
Мази

1

MathGolf , 6 5 байт

\{\o*

Попробуйте онлайн!

Я думаю, что это может быть 5 байт ( \{\o*), но\ инструкции, кажется, немного не так, когда дело касается ввода Это теперь исправлено в последней версии.

Объяснение:

\       Swap arguments, pushing both to stack
 {      Foreach loop over second argument
  \o    Output counter with newline
    *   Multiply counter by current element
        Implicitly output the last element

Я переработал обработку `` с неявным вводом. Он по-прежнему обрабатывает элементы в стеке таким же образом, но теперь он помещает два элемента из входных данных в стек вместо одного. Я думаю, что это может быть полезно для этого вызова.
maxb


0

Древесный уголь , 12 байт

IE⁺⟦N⟧AΠ⊞Oυι

Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:

    N           Input a₀
   ⟦ ⟧          Wrap in a list
      A         Input deltas as a list
  ⁺              Concatenate lists
 E              Map over elements
           ι    Current element
          υ     Predefined empty list variable
        ⊞O      Push and return updated list
       Π        Product
I               Cast to string
                Implicitly print each value on its own line

0

K (ок) , 9 байт

{(*\)x,y}

Попробуйте онлайн!

Присоединяет первое число ко второму входу в виде списка, а затем возвращает последовательные результаты умножения

Тестовые случаи

Введите свой ввод после функции, как показано ниже, а затем запустите, так как я не уверен, как правильно использовать ввод для этого языка в TiO

{(*\)x,y}[1;1 5 3 2]

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.