gpt4 book ai didi

list - 当无限列表开始重复时过滤

转载 作者:行者123 更新时间:2023-12-04 22:22:52 26 4
gpt4 key购买 nike

我在 Haskell 中创建一个序列作为 [Integer]。该序列的数学定义是它对某些正整数重复。在这种情况下,我想终止序列并确定有限列表的长度。

我尝试解决的方法是首先从数学序列中创建一个无限列表。然后我想过滤所有元素的列表,直到第一个元素重复。结果不应包括列表的重复头。

我在这里有两个问题/疑虑:

1) 如何将列表的头部与列表后面的元素匹配?
2)这是解决我的问题的有效方法吗? (如果需要,我将在稍后添加有关确切序列的更多详细信息。现在我正在寻找一般性评论。)

最佳答案

您描述的算法可以简单地实现如下:

findPeriodic :: Eq a => [a] -> [a]
findPeriodic [] = error "there are no periodic sequences in the empty list"
findPeriodic (x : xs) = x : takeWhile (/= x) xs

它完全按照您的描述执行:它获取某个列表的头部,并收集列表的一部分,直到该头部元素再次出现在列表中。因此,例如:
list = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, ...]
findPeriodic list => [1, 2, 3, 4, 5]

关于list - 当无限列表开始重复时过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11635671/

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