首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“排序”算法

“排序”算法
EN

Code Golf用户
提问于 2018-10-30 15:05:28
回答 4查看 4.7K关注 0票数 34

有一种“排序算法”,有时称为斯大林排序,为了对列表进行排序,您只需从列表中删除元素,直到元素按递增的顺序排序。例如,列表

代码语言:javascript
复制
[1, 2, 4, 5, 3, 6, 6]

当使用斯大林排序时

代码语言:javascript
复制
[1, 2, 4, 5, 6, 6]

这三个人被移走了,因为这是不正常的。

现在,显然有许多方法可以删除元素来排序列表。例如,任何小于两个元素的列表都必须进行排序,因此只要盲目地删除足够的元素,我们就可以对列表进行排序。既然是这样的话,我们只关心斯大林那一类可能最长的结果。

您的任务将是获取一个正整数列表,并输出通过从原始列表中删除元素可以得到的最长排序(递增)列表的长度。即找到最长排序(可能是不连续的)子列表的长度。

排序列表可以连续多次使用相同的元素。除非程序本身是空的,否则不需要支持空列表。

评分

你的答案将以它自己最长的斯大林类型的长度来衡量。程序将被解释为一个字节序列,而不是字符,它们的顺序将是通过将字节解释为数字而产生的自然顺序。分数越低越好。

这不是密码-高尔夫

这是整洁的工具帮助你得分的答案。

测试用例

代码语言:javascript
复制
[1, 2, 4, 5, 3, 6, 6] -> 6
[19, 2] -> 1
[3, 3, 4, 3] -> 3
[10] -> 1
[1, 2, 4, 9] -> 4
[1, 90, 2, 3, 4, 5] -> 5
[1, 90, 91, 2, 3, 4, 5] -> 5
EN

回答 4

Code Golf用户

发布于 2018-10-30 16:11:42

Wolfram语言(数学),9分

代码语言:javascript
复制
Length@*LongestOrderedSequence

在网上试试!

票数 7
EN

Code Golf用户

发布于 2018-10-30 17:05:54

Perl 6,9分

代码语言:javascript
复制
*.combinations.map({@^a*[<=] @a}).max

在网上试试!

票数 5
EN

Code Golf用户

发布于 2018-10-30 15:23:20

斯塔克斯,4最大长度的斯大林排序

代码语言:javascript
复制
S{:^fF%|M

运行并调试它

它是这样工作的。

代码语言:javascript
复制
S       powerset of input
{:^f    filter by non-descending sequences
F%|M    take the maximum length remaining
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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