transversal sum
John Colvin via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Nov 6 14:18:26 PST 2014
On Thursday, 6 November 2014 at 15:53:27 UTC, Jack Applegame
wrote:
> I have rectangular forward range of forward ranges (not arrays):
> [
> [a11, a12, ... a1N],
> [a21, a22, ... a2N],
> ...
> [aM1, aM2, ... aMN]
> ]
>
> I need lazy forward range:
> [
> a11 + a21 + ... aM1,
> a12 + a22 + ... aM2,
> ...
> a1N + a2N + ... aMN
> ]
> Range of sum elements of every columns;
>
> M, N - runtime values;
>
> Is there a way to do this using only Phobos algorithms and
> range functions?
nasty inefficient solution, but might be ok if your ranges have
cheap popFront:
import std.algorithm, std.range, std.stdio, std.array;
void main()
{
auto M = 3;
auto N = 10;
//generate a RangeOfRanges for testing
auto ror = iota(1, M+1)
.map!(l => iota(N)
.map!(e => e * l^^2));
auto rorFlat = ror.joiner;
iota(N)
.map!(i => rorFlat.save.drop(i).stride(N))
.map!sum.writeln;
}
More information about the Digitalmars-d-learn
mailing list