On Friday, 8 April 2016 at 18:27:59 UTC, Laeeth Isharc wrote:
suppose I have a forward or random access range. what's the
best way to compare each element with the element 4 elements
prior to that element? I could map each element to a tuple of
the element and the element 4 bars previously and do it that
way. any neater way ?
I would recommend writing a good lag function. If we have a good
lag function, then you could easily do something like
x.zip(x.lag(lookback)).map!(a => a[0] > a[1]);
I could think of a few different ways to implement a lag
function, but it would take some time to write a good one
(including NA padding, for instance). You could probably use
popBackN or popFrontN/drop to accomplish it, depending on forward
or backward lags.
Alternately, you could probably figure something out with .save
that avoids the use of a lag function. You could create a range
that saves up to four values. When full you pop off the front,
make your comparison, and then save the latest.