- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
a -> a 我知道它最终会 self 重复(我不太确定这样的函数叫什么;想到“周期性”,但这有点不同,不是吗),我想确定有多少独特的它产生的值(value)。-6ren">
我有一个函数
f :: Eq a => a -> a
我知道它最终会 self 重复(我不太确定这样的函数叫什么;想到“周期性”,但这有点不同,不是吗),我想确定有多少独特的它产生的值(value)。
天真地,像
import Data.List (nub)
length $ nub $ take n $ iterate f a0
其中 a0
是一些初始的 a
而 n
是一些我知道超过了 f 的唯一值数量的大数字
,将起作用。但是,除了我必须猜测或反复试验 n
的明显缺点外,这是不切实际的(无论如何在我的情况下),因为 f
可以是时间-消费。
在 Haskell 中查找重复应用此类“重复”(或任何正确的术语)函数产生的唯一值列表的最佳方法是什么?
最佳答案
这正是 https://en.wikipedia.org/wiki/Cycle_detection 解决的问题.该页面指定了该问题的几个众所周知的解决方案。
这是基本龟兔算法的未经测试的 Haskell 实现:
floyd :: Eq a => (a -> a) -> a -> (Int, Int)
floyd f x0 = (lam, mu) where
hare0 = head
[t | (h, t) <- tail $ zip (iterate f x0) (iterate (f . f) x0), h == t]
(mu, tortoise1) = head
[(m, t) | (m, t, h) <- zip3 [0..] (iterate f x0) (iterate f hare0), t == h]
lam = head [l | (l, h) <- zip [1..] (iterate f (f tortoise1)), h == tortoise1]
关于algorithm - 如何确定 Haskell 中 "repeating"函数假定的值的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32748205/
关于 Stylus 的一大优点是它允许您定义可用于自定义结果输出配置的变量。 例如, // my-html-object.styl $my-html-object-color = red $my-ht
我是 C++ 的新手,只有一个 C++ 的小头文件,里面有一个简单的结构。 PGNFinder.h: #ifndef PGNFINDER_H #define PGNFINDER_H struct Fi
我正在为 Windows 编写一段 C++ 代码,需要查询进程及其每个单独线程的计时。 为了进行必要的系统调用,我需要进程及其每个线程的句柄。我正在使用 getCurrentProcess 和 get
我正在尝试从数据库中检索数据,但将其限制为每个 View 的特定数量的项目。但相反,我得到了上述错误。我创建了以下函数来检索数据: //function to display jobs functio
我有一个用于我的 C++ 应用程序的 settings.ini 文件,但是我的一个用户 Windows\Temp 坏了,导致它对他来说一团糟。所以我打算将它移到他的用户文件夹中。所以我想在全局变量部分
This post says如果您的数据大于 2GB,您需要 64 位系统用于 MongoDB。 在我的本地机器上,运行 32 位 Mac OS X Leopard 的 64 位 Intel C2D,
Thymeleaf tutorial code 这个 SeedStarter 是如何实例化的?请参阅方法主体显示与对象 SeedStarter 的交互。那么它首先是如何实例化的? 由于这个项目是一个教
因此,在这个相当大的源文件中,我有以下部分,假设在函数 foo 中,从 main 调用: FILE *logfile = NULL if (log_engabled) { char fname
出于某种原因,我坚持使用 List 作为集合类型的模型类,我想在客户端使用该模型。然而,GWT 当然无法序列化 java.util.List。但是,此模型中 List 的所有实现都基于 ArrayLi
如何使用 JavaScript 解析此 CSV? 1363085391,42.890000000000,5.432200000000 1363088879,47.570000000000,4.9818
我正在使用名为 paypal_class 的 codeigniter 库。一切都很好,但是在验证 ipn 函数时我得到了这个错误。 使用未定义的常量主机 - 假定为“主机”,这一定是邮件未发送给用户的
这个问题已经有答案了: Forcing GCC to compile .cpp file as C (2 个回答) 已关闭 10 年前。 我有一个 C++ 项目 [IDE = codelite],它尝
这个问题在这里已经有了答案: Sorting a vector of custom objects (14 个答案) 关闭 6 年前。 我创建了一个 vector vector ,我想根据我定义的参
我是一名优秀的程序员,十分优秀!