gpt4 book ai didi

language-agnostic - Code Golf : Numeric Ranges

转载 作者:行者123 更新时间:2023-12-03 14:15:18 26 4
gpt4 key购买 nike

锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或交互。








挑战
通过用范围替换连续运行来压缩一长串数字。
例子
输入1, 2, 3, 4, 7, 8, 10, 12, 13, 14, 15输入保证按升序排列,并且不会包含重复项。
输出1 - 4, 7, 8, 10, 12 - 15请注意,两个数字的范围应保持原样。 ( 7, 8 ; 不是 7 - 8 )
规则
您可以从命令行或标准输入中接受整数(或等效数据类型)的排序列表作为方法参数。(选择导致更短代码的任何选项)
您可以通过打印字符串或返回单个字符串或一组字符串来输出字符串列表。
引用实现
(C#)

IEnumerable<string> Sample(IList<int> input) {
for (int i = 0; i < input.Count; ) {
var start = input[i];
int size = 1;
while (++i < input.Count && input[i] == start + size)
size++;

if (size == 1)
yield return start.ToString();
else if (size == 2) {
yield return start.ToString();
yield return (start + 1).ToString();
} else if (size > 2)
yield return start + " - " + (start + size - 1);
}
}

最佳答案

Python,98 个字符

def f(a):
for x in a:
if x-1not in a or x+1not in a:print x,"-"if x+1in a and x+2in a else",",

Python - 86 个字符

这个结尾不包含额外的“,”
f=lambda a:''.join(`x`+",-"[(x+1in a)&x+2in a]for x in a if(x-1in a)&(x+1in a)^1)[:-1]

关于language-agnostic - Code Golf : Numeric Ranges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com