首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >倒倒金字塔Addition...REVERSED!

倒倒金字塔Addition...REVERSED!
EN

Code Golf用户
提问于 2019-04-30 12:43:09
回答 16查看 3.6K关注 0票数 23

倒挂金字塔加法是一个过程,把一个数字的列表,并连续地加在一起,直到你达到一个数字。

当给定数字2, 1, 1时,将发生以下过程:

代码语言:javascript
复制
 2   1   1
   3   2 
     5

这以数字5结尾。

您的任务

考虑到向上向上的金字塔(上升)的右侧,编写一个程序或函数来返回原始列表。

新的额外挑战:尝试在小于O(n^2)的范围内完成此任务。

示例

代码语言:javascript
复制
f([5, 2, 1]) => [2, 1, 1]
f([84,42,21,10,2]) => [4,7,3,8,2]

注:倒向金字塔将永远不会是空的,将永远由正整数组成。

EN

回答 16

Code Golf用户

发布于 2019-05-01 01:15:53

哈斯克尔,22字节

代码语言:javascript
复制
foldl(flip$scanr(-))[]

在网上试试!

票数 8
EN

Code Golf用户

发布于 2019-04-30 14:48:14

Haskell,42字节

代码语言:javascript
复制
f[]=[]
f a=f(zipWith(-)a$tail a)++[last a]

在网上试试!

票数 7
EN

Code Golf用户

发布于 2019-04-30 13:50:43

TI-BASIC,54个字节

代码语言:javascript
复制
Ans→L₁:dim(L₁→dim(L₂:While 1-Ans:L₁(Ans→L₂(Ans:-ΔList(L₁→L₁:dim(Ans:End:L₁(Ans→L₂(Ans:L₂

输入是Ans中三角形右侧的列表,正如挑战中所描述的那样。

输出是所述三角形的顶部行。

示例:

代码语言:javascript
复制
{5,2,1
         {5 2 1}
prgmCDGF19
         {2 1 1}
{84,42,21,10,2
 {84 42 21 10 2}
prgmCDGF19
     {4 7 3 8 2}

解释:

该解决方案滥用了这样一个事实,即以三角形的右侧为起始点形成的三角形最终是每个元素中的变化。

换句话说,

代码语言:javascript
复制
2 1 1
 3 2
  5

变成:

代码语言:javascript
复制
5 2 1
 3 1
  2

因此,生成的列表是这个新三角形的右侧,可以通过将最后一个元素设置为其父列表长度的索引来形成该三角形。

代码语言:javascript
复制
Ans→L₁          ;store the input list in L₁
dim(L₁→dim(L₂   ;set the length of L₂ to the length of L₁
While 1-Ans     ;while the L₁'s length is not 1
L₁(Ans→L₂(Ans   ;set the last element of L₁ to the corresponding index in L₂
-ΔList(L₁→L₁    ;get the change in each element, then negate
                ; (elements are in descending order so the change in each
                ;  element will be negative)
                ; and store the resulting list in L₁
dim(Ans         ;leave the length of L₁ in "Ans"
End
L₁(Ans→L₂(Ans   ;set the element again
                ; (needed for final step)
L₂              ;leave L₂ in "Ans"
                ;implicit print of "Ans"

注: TI-BASIC是一种标记化语言.字符计数不等于字节计数。

票数 6
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/184951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档