我有一个像8, 7, 6, 5, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 4
这样的输入序列。结果应显示为0, 0
。
是的,这很容易。但是当输入仅为0, 0
时,我不希望结果为0, 0
。
这里的事情是它应该只在前一个值大于零的情况下发布0
。
答案 0 :(得分:4)
IObservable<int> source = new[] { 8, 7, 6, 5, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 0, 4 }.ToObservable();
IObservable<int> edges = source.Zip(source.Skip(1), (f, s) => Tuple.Create(f, s))
.Where(t => t.Item1 > 0 && t.Item2 == 0)
.Select(t => t.Item2);