乘法相差


9

让我们定义值的“乘法增量”为:[a0,aN,]

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

反向运算(即“乘积反增量”)返回值,以使上述运算得出给定值。

给定值1、5、3、2乘法非增量 ”运算的一般解决方案是:[1,5,3,2]

[a0,a01a1,a15a2,a23a3,a32a4]

可以通过将设置为零以外的任何值来获得特定的解决方案,例如,通过将设置为:a0a0:=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 +增量数的列表,其中第一项为a₀吗?
亚当

@Adám:我要说不,因为这会改变现有答案的情况。
ბიმო

Answers:


17

Haskell,8个字节

scanl(*)

在线尝试!


我正在检查是否有人写过这个,我以为没有人写过,我说“很酷,然后我会写”,然后在页面底部看到您的答案。赞成。
风车饼干

9

APL(Dyalog),3个字节

×\∊

在线尝试!

如果我必须在左边取数字,在右边取数组:

-2感谢@ H.PWiz

7 5 3字节

×\,


2
⊣,⊢可以是,
H.PWiz

@ H.PWiz谢谢,我的默契非常弱
Quintec '18

您不需要括号。×\,计算为一个函数。
丹尼斯

@Dennis似乎并不能正常工作
Quintec,

您无需计算数目,因为在某些情况下不需要。f←×\例如,作品。顺便说一句,(-12 3 -17 1311)您的永久链接中的应当为(¯12 3 ¯17 1311)
丹尼斯

8

R,15个字节

cumprod(scan())

在线尝试!

完整程序。函数会更长(除非允许我们将输入“粘合”在一起,以便内置cumprod可以作为一个完整的答案):

R,28个字节

function(i,x)cumprod(c(i,x))

在线尝试!


5

MATL,3个字节

hYp

在线尝试!

            #implicit input, x_0 and A
h           #horizontally concatenate
Yp          #cumulative product
            #implicit output

hYp关于MATL 的e是真实的。



3

Japt,3个字节

å*V

尝试一下


说明

        :Implicit input of array U and integer V
å       :Cumulatively reduce U
 *      :By multiplication
  V     :With an initial value of V







1

批处理,69字节

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

接受输入 一个0 在STDIN和增量上作为命令行参数。




1

05AB1E5 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
Kevin Cruijssen

1

Pyth,6个字节

*FR._s

在这里测试那个!

或者,7个字节:

.u*NYEQ

在这里测试!

第一个将输入作为元组,第二个将输入作为两条单独的线。

感谢@Sok帮助我擅长映射和节省1个字节。


1
您可以通过在第二个解决方案作为实施地图保存一个字节R,如*FR._s- 示范

@Sok好抓住!我曾尝试过M假设它可以工作,然后糖分析失败了-主要是因为我不记得解析的F <pf2>工作原理。
史蒂文H.

我会说实话,我真的不知道如何嵌套MFL,和R工作,我只是尝试了一堆,直到一个工作:O)


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

MathGolf6 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]

0

dc,13个字节

p[*pz1<A]dsAx

在线尝试!

p[*pz1<A]dsAx
p               # Print the first element
  *p            # Multiply top elements on the stack
 [  z1<A]dsAx   # until only one element is left
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.