JavaScript / Cubix,36个字节
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
尝试一下!
可以使用下面的代码片段测试JavaScript函数,可以在此处测试Cubix程序。
这是如何运作的?
的JavaScript
第一行是JavaScript的行注释,因为它以两个斜杠开头,因此JavaScript仅看到最下面的行(a=>eval(a.join`-`)
),该行将数组作为输入,将其与中间的减号连接起来,然后将其作为代码运行,从而数组中所有元素的减法。
let f=
//.!v+u;$I^@O<.Iu
a=>eval(a.join`-`)
console.log(f([1,2,3,4,5]))
console.log(f([3,1,4,1,5]))
库比克斯
Cubix看到以下多维数据集(请注意,Cubix会忽略所有空白):
/ / .
! v +
u ; $
I ^ @ O < . I u a = > e
v a l ( a . j o i n ` -
` ) . . . . . . . . . .
. . .
. . .
. . .
起点
IP从第三行开始,指向东方。它命中该'I'
命令,该命令从输入中获取一个数字,并将其压入堆栈。然后,将其重定向'^'
到sum-loop中。
求和环
我删除了不属于sum循环的所有字符,并用no-ops('.'
)替换了它们。IP最初到达第二行,指向东。
. . .
! v +
u ; $
. . . . . . I u . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
首先,'!'
命令检查顶部元素。如果是0
(即,我们已经到达输入的末尾),'v'
则执行下一条指令(),从而将IP反映在循环之外。如果尚未到达输入的末尾,则将前两项相加('+'
,第二项是该点的总和,前一项是新输入)。然后,IP绕到立方体的另一面,变成'u'
字符,这使IP掉头并执行'I'
命令(读取另一个输入整数),同时指向北。IP回绕到顶部,跳过('$'
)删除指令(';'
),然后再次掉头,回到我们开始的位置。
结束
如果IP反映在循环之外,则执行以下字符:
. . .
. v .
. ; .
. . @ O < . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . .
. . .
. . .
这些指令删除顶部元素(为零),然后将顶部元素(总和)输出为整数。然后到达'@'
命令,因此程序结束。