我正在Haskell中创建一个序列作为[Integer]
。序列的数学定义是,它对某些正整数重复。在这种情况下,我想终止序列并确定有限列表的长度。
我尝试的解决方案是首先从数学序列中创建一个无限列表。然后我想过滤列表中的所有元素,直到第一个元素重复。结果不应包括列表的重复标题。
我有两个问题/顾虑:
1)如何将列表的头部与列表中稍后的元素匹配?这是解决我问题的有效方法吗?(如果需要,我将在稍后添加更多关于确切序列的细节。目前,我正在寻找一般性意见。)
第一个元素可能永远不会在像1,2,3,4,5,3,4,5,3,4,...
这样的序列中重复,其中(a!!i)==(a!!j)==
这被称为循环检测,最近在这里进行了讨论。
您描述的算法可以简单地实现如下:
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]
问题内容: 我打算初始化一个长度为n的列表列表。 但是,这以某种方式将列表链接在一起。 我希望有这样的东西: 有任何想法吗? 问题答案: 问题在于它们在内存中都是完全相同的列表。当使用语法时,得到的是n许多x对象的列表,但是它们都是对同一对象的引用。它们不是不同的实例,而是n对同一实例的引用。 要列出3个不同的列表,请执行以下操作: 这为你提供了3个单独的实例,这是你想要的 类似于 虽然类似于:
这是保存列表的功能,有什么方法可以让我将列表保存在数据库中,并跳过现有的列表,这样它就会与现有的列表重复。 下面是我保存列表的SQL
我知道对无限列表进行排序是不可能的,但我正试图为n个数的倍数的无限递增列表写一个定义。 我已经有这个功能了 它返回n的无限倍数列表。但现在我想构建一个函数,给定一个返回列表中所有数字的倍数的无限递增列表。所以函数
我有如下列表: 列表 但是,这给了一张地图。我不需要地图,我需要名单。 我怎么能这么做?
我有下表(TBL_视频),在“TIMESTAMP”中有重复的列条目,我只想在“CAMERA”编号匹配时删除它们。 之前: 之后: 我已尝试此语句,但列不会相应删除。我非常感谢为生成正确的SQL语句所提供的所有帮助。提前谢谢!
输入是一个列表列表。请看下面。文件名是一个列表,包含的名称与列表中的列表数量相同(,,) 每个名称都附加到路径中:-- 程序在遍历列表时遍历包含路径的列表,并打印路径及其文件名。我希望输出是--。然而,我得到了下面的输出。请查看输入后的输出 输入 输出 我希望输出是-- 然而,我得到的结果如下: 我无法理解为什么在遍历列表时不能使用文件名遍历路径列表。我希望这有助于澄清问题。有人能帮忙吗? 我已经