首页
学习
活动
专区
圈层
工具
发布

海马鞋
EN

Code Golf用户
提问于 2017-07-14 06:06:51
回答 5查看 2.6K关注 0票数 31

海马当然需要鞋子。然而,海马,只有一条尾巴,只需要一只鞋。不幸的是,这双鞋只是成对的。对于海马政府来说,资金紧张,所以他们需要尽可能少的购买。每匹海马都有一个鞋号x,其中x是一个正整数。然而,如果需要的话,海马可以穿x-1或x+1大小的鞋。

你的任务是输出海马政府必须购买的最低数量的鞋子,把鞋子放在他们所有的海马上。

你可以采取任何你想要的输入,标准漏洞,等等。

由于这是密码-高尔夫,以字节为单位的最短代码将获胜。

测试用例

代码语言:javascript
复制
2 4 6 6 8 14 ->        4
2 1 3 1 1 ->           3
4 1 4 9 1 8 9 1 8 4 -> 6
1 2 3 5 7 8 10 12 ->   4
EN

回答 5

Code Golf用户

回答已采纳

发布于 2017-07-14 09:39:27

05AB1E,13字节

使用注释中描述的方法OP。

代码语言:javascript
复制
{¥3‹J0¡€gÌ2÷O

在网上试试!

解释

代码语言:javascript
复制
{¥3‹J0¡€gÌ2÷O   Argument l
{               Sort l
 ¥              Push deltas
  3‹            Map to lower than 3 (1 for true, 0 for false)
    J0¡         Join and split on 0
       €g       Map to length
         Ì      Each + 2
          2÷    Integer division by 2
            O   Sum
票数 6
EN

Code Golf用户

发布于 2017-07-14 07:03:07

Python 2,49字节

代码语言:javascript
复制
f=lambda a:a>[a.sort()]and-~f(a[[3+a.pop(0)]>a:])

在网上试试!

基于漏递推解

Python 2,59字节

代码语言:javascript
复制
p=c=0
for x in sorted(input()):c+=x>p;p=(x>p)*(x+2)
print c

在网上试试!

按排序顺序迭代大小x。记住当前大小与前一个大小成对的上限p。如果是(x>p),将阈值重置为0,使下一个阈值无法配对。如果没有,增加输出计数c,并将下一个阈值p设置为x+2

新的阈值p=(x>p)*(x+2)是一个臃肿的表达式。我想找个办法把它缩短。

票数 7
EN

Code Golf用户

发布于 2017-07-14 11:08:44

Mathematica,67字节

代码语言:javascript
复制
Length@Flatten[Partition[#,UpTo@2]&/@Split[Sort@#,Abs[#-#2]<3&],1]&

试试钨砂盒吧。

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

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

复制
相关文章

相似问题

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