【发布时间】:2011-01-17 18:09:52
【问题描述】:
我在 hubFS 上找到了 this question,但它处理基于单个元素的拆分标准。我想根据相邻元素的比较进行拆分,因此类型如下所示:
val split = ('T -> 'T -> bool) -> 'T list -> 'T list list
目前,我正在尝试从 Don 的命令式解决方案开始,但我无法弄清楚如何初始化和使用“prev”值进行比较。折叠是更好的方式吗?
//Don's solution for single criteria, copied from hubFS
let SequencesStartingWith n (s:seq<_>) =
seq { use ie = s.GetEnumerator()
let acc = new ResizeArray<_>()
while ie.MoveNext() do
let x = ie.Current
if x = n && acc.Count > 0 then
yield ResizeArray.to_list acc
acc.Clear()
acc.Add x
if acc.Count > 0 then
yield ResizeArray.to_list acc }
【问题讨论】: