前方差分を遅延計算するための、std.algorithm
またはそれを使用する関数はありますか? std.range
ソートされた要素 (整数) を範囲内で差分パックするには、これが必要です。整数はたまたまSysTime
タイムスタンプです。
更新:提案された解決策:
/** Compute Forward Difference of $(D range).
*/
auto ref forwardDifference(bool reverse = false, Range)(in Range range)
@safe pure nothrow if (isInputRange!Range)
{
import std.algorithm: map;
import std.range: zip, dropOne;
static if (reverse)
return range.zip(range.dropOne).map!(a => a[1] - a[0]);
else
return range.zip(range.dropOne).map!(a => a[0] - a[1]);
}
unittest {
const i = [1, 5, 9, 17];
import std.algorithm: equal;
assert(equal(i.forwardDifference!false, [ -4, -4, -8]));
assert(equal(i.forwardDifference!true, [ +4, +4, +8]));
}
解決策についてコメントしてください。