Seq.Fold - >应用倒数的最佳方法是什么?

时间:2014-05-04 16:27:35

标签: f#

我有这样的Seq:

[(1,0,10); (5,1,10); (5,0,10); (8,1,10); ...]

我希望每当第二个元素为1时,将元组中的第三个元素减少一个

[(1,0,10); (5,1,9); (5,0,9); (8,1,8); ...]

我在想Seq.Fold b / c我需要一个累加器,但我不知道如何实现。我是在正确的轨道上吗?

2 个答案:

答案 0 :(得分:2)

你只需要一张地图:

[(1, 0, 10); (5, 1, 10); (5, 0, 10); (8, 1, 10); ...] 
|> List.map (function (first,second,third) when second = 1 -> (first,second,third - 1) | other -> other)

答案 1 :(得分:-1)

我很接近,但使用了错误的功能

Seq.Scan可以解决这个问题......