首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用笔触覆盖天际线

用笔触覆盖天际线
EN

Code Golf用户
提问于 2019-02-04 11:12:33
回答 14查看 9K关注 0票数 50

给定一个非负整数天际线高度列表,回答需要多少个不间断的1单位高的水平笔画来覆盖它。

[1,3,2,1,2,1,5,3,3,4,2],可视化为:

代码语言:javascript
复制
      5    
      5  4 
 3    5334 
 32 2 53342
13212153342

需要九次笔触:

代码语言:javascript
复制
      1    
      2  3 
 4    5555 
 66 7 88888
99999999999

示例

[1,3,2,1,2,1,5,3,3,4,2]9

[5,8]8

[1,1,1,1]1

[]0

[0,0]0

[2]2

[2,0,2]4

[10,9,8,9]11

EN

回答 14

Code Golf用户

发布于 2019-02-05 02:39:34

哈斯克尔,32字节

代码语言:javascript
复制
(0%)
p%(h:t)=max(h-p)0+h%t
p%_=0

在网上试试!

林恩解的改进,它跟踪上一个元素p,而不是查看下一个元素。这使得基本情况和递归调用更短,以换取需要调用(0%)

max(h-p)0可以是相同长度的max h p-p

票数 8
EN

Code Golf用户

发布于 2019-02-04 15:44:37

哈斯克尔,35字节

代码语言:javascript
复制
f(a:b:c)=max(a-b)0+f(b:c)
f a=sum a

在网上试试!

如果我也不必处理f[a]=a,那么第2行可以是[]

票数 7
EN

Code Golf用户

发布于 2019-02-04 13:08:32

果冻,5字节

我的05AB1E答案的一个端口,它本身类似于@tsh答复

代码语言:javascript
复制
ŻI0»S

在网上试试!

评论

代码语言:javascript
复制
ŻI0»S    - main link, expecting a list of non-negative integers  e.g. [10, 9, 8, 9]
Ż        - prepend 0                                             -->  [0, 10, 9, 8, 9]
 I       - compute the deltas                                    -->  [10, -1, -1, 1]
  0»     - compute max(0, v) for each term v                     -->  [10, 0, 0, 1]
    S    - sum                                                   -->  11
票数 6
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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