On Monday, 16 November 2015 at 09:56:57 UTC, Andrea Fontana wrote:
On Monday, 16 November 2015 at 03:05:03 UTC, Ilya Yaroshenko
wrote:
Hello,
Review manager for N-dimensional ranges is wanted
Docs (see PR for latest version):
http://dtest.thecybershadow.net/artifact/website-7a646fdea76569e009844cdee5c93edab10980ca-cdcb694c40ec47acf88b0aa878e1623e/web/phobos-prerelease/std_experimental_range_ndslice.html
PR: https://github.com/D-Programming-Language/phobos/pull/3397
DUB: http://code.dlang.org/packages/dip80-ndslice
Best Regards,
Ilya
Nice work!
If I have a matrix like
1 2
3 4
iota(4).sliced(2,2);
Is there a way to transform it to:
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
3 3 3 4 4 4
3 3 3 4 4 4
3 3 3 4 4 4
or
0 0 0 0 0 0
0 1 0 0 2 0
0 0 0 0 0 0
0 0 0 0 0 0
0 3 0 0 4 0
0 0 0 0 0 0
?
Of course the inverse operation seems quite easier to do using
slices.
```
import std.algorithm, std.range, std.stdio;
auto m = iota(1, 5).sliced(2, 2);
"%(%(%s %)\n%)\n".writefln(m);
auto w = createSlice!int(6, 6);
w[1..$, 1..$].strided!0(3).strided!1(3)[] = m;
"%(%(%s %)\n%)\n".writefln(w);
foreach(i; 0..3)
foreach(j; 0..3)
w[i..$, j..$].strided!0(3).strided!1(3)[] = m;
"%(%(%s %)\n%)\n".writefln(w);
```
Prints:
1 2
3 4
0 0 0 0 0 0
0 1 0 0 2 0
0 0 0 0 0 0
0 0 0 0 0 0
0 3 0 0 4 0
0 0 0 0 0 0
1 1 1 2 2 2
1 1 1 2 2 2
1 1 1 2 2 2
3 3 3 4 4 4
3 3 3 4 4 4
3 3 3 4 4 4
--Ilya