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


9

Давайте визначимо "мультиплікативні дельти" значень як:[а0,аN,]

[а1/а0,,аi+1/аi,,аN/аN-1]

Зворотна операція - а саме "мультиплікативна недельта" - повертає значення такі, що вищезазначена операція призводить до заданих значень.

Приклад

Дані значення загальним рішенням операції " мультиплікативна недельта " є:[1,5,3,2]

[а0,а01а1,а15а2,а23а3,а32а4]

Конкретне рішення можна отримати, встановивши а0 на будь-яке значення, відмінне від нуля, наприклад, встановивши а0: =1 ми отримаємо:

[1,1,5,15,30]

Виклик

Ваше завдання для цього завдання - реалізувати операцію " мультиплікативна недельта ", як визначено вище.

Правила

Вхідні дані:

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

Вихід - це список / масив / вектор / ... таких значень, що перший елемент є а0 і для яких " мультиплікативними дельтами " є вхідні дані.

Примітка: Якщо у вашій мові немає підтримки негативних цілих чисел, ви можете замінити ненульові на позитивні .

Тестові справи

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 + кількість дельт, де перший пункт - a₀?
Адам

@ Adám: Я хочу сказати "ні", тому що це змінить існуючі відповіді.
ბიმო

Відповіді:



9

APL (Dyalog), 3 байти

×\∊

Спробуйте в Інтернеті!

Якщо мені доведеться взяти номер зліва та масив праворуч:

-2 завдяки @ H.PWiz

7 5 3 байти

×\,


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

@ H.PWiz спасибі, моя мовчазна вкрай слабка
Квінтек

Вам не потрібні парони; ×\,оцінює функцію.
Денніс

@Dennis, здається , ні до роботи , до жаль
Quintec

Не потрібно рахувати паронів, оскільки вони не потрібні в деяких ситуаціях. f←×\працює, наприклад. Btw, (-12 3 -17 1311)у вашій постійній посилання має бути (¯12 3 ¯17 1311).
Денніс











1

Пакет, 69 байт

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

Приймає введення а0 на 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є свопом і šготується до початку списку. Так чи інакше, спасибі за -2
Кевін Круїйсен

1

Pyth, 6 байт

*FR._s

Перевірте це тут!

Як варіант, 7 байт:

.u*NYEQ

Тестуйте його тут!

Перший приймає введення як кортеж, другий приймає введення як два окремих рядки.

Дякуємо @Sok за те, що він допомагає мені зробити хороше в картографуванні та зберегти 1 байт.


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

@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 (oK) , 9 байт

{(*\)x,y}

Спробуйте в Інтернеті!

Приєднує перше число до другого вводу як список, а потім повертає послідовні результати множення

Випробування

Введіть свій вхід після функції, як показано нижче, а потім запустіть, оскільки я не впевнений, як правильно вводити цю мову в TiO

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.