![]() |
1
12
你一定要去看看 但稍后我将尝试发布一个更全面的答案。 更新 好的,下面是一个解决方案。它将莫里斯序列表示为int的lazylist中的lazylist,因为我假定您希望它在“两个方向”上都是懒惰的。 f lazylist(在fsharp.powerpack.dll中)有三个有用的属性:
第一个属性与Seq(IEnumerable)相同,但其他两个属性对于Lazylist是唯一的,对于计算问题(如本问题中提出的问题)非常有用。 无需进一步说明,代码:
更新2 如果你只想数数,那也没关系:
内存使用率保持不变(在我的盒子上低于16米)…还没有跑完,但我计算了第55个长度很快,即使是在我的慢盒子上,所以我认为这应该工作得很好。还要注意,我在长度上使用了“bignum”,因为我认为这将溢出一个“int”。 |
![]() |
2
3
我认为这里有两个主要问题:
在计算第50个子序列的长度时,下面的代码比您的实现快80倍以上,但对于您来说,这可能还不够懒:
这个功能的核心是折叠
|
![]() |
3
0
只需保存您查找的上一个元素。
|
![]() |
Thomas · 使类型别名在F中不可互换# 3 年前 |
![]() |
sdgfsdh · 我该怎么说。使用异步转换函数进行收集? 7 年前 |
![]() |
Soldalma · 我可以实例化包含顶级副作用值的类吗? 7 年前 |
![]() |
matekus · F#-包含数字的字符串的自然排序 7 年前 |
![]() |
matekus · F#类型匹配-无法创建映射或匹配记录 7 年前 |
![]() |
Rob Lyndon · 未找到F#ProvidedTypes文件 7 年前 |
![]() |
red-swan · 如何将intro ML.Net演示翻译为F#? 7 年前 |
![]() |
jkone27 · F#-在编译时从字符串生成简单的空类型 7 年前 |