Matrix transposition: Difference between revisions

Content added Content deleted
(Added K Version)
(Simplified D code)
Line 621: Line 621:


=={{header|D}}==
=={{header|D}}==
<lang d>import std.stdio, std.string, std.algorithm, std.array;
<lang d>import std.stdio, std.algorithm, std.array, std.conv;


auto transpose(T)(T[][] m) {
pure nothrow auto transpose(T)(in T[][] m) {
auto r = new T[][](m[0].length, m.length);
auto r = new T[][](m[0].length, m.length);
foreach (nr, row; m)
foreach (nr, row; m)
Line 629: Line 629:
r[nc][nr] = c;
r[nc][nr] = c;
return r;
return r;
}

auto prettyPrint(T)(T[][] m) {
return "[" ~ array(map!format(m)).join("\n ") ~ "]";
}
}


void main() {
void main() {
auto M = [[10,11,12,13], [14,15,16,17], [18,19,20,21]];
auto M = [[10, 11, 12, 13],
[14, 15, 16, 17],
writeln("M:\n", M.prettyPrint());
[18, 19, 20, 21]];
writeln("\nM transposed:\n", M.transpose().prettyPrint());
auto Mt = transpose(M);
writeln("[", array(map!text(Mt)).join("\n "), "]");
}</lang>
}</lang>
Output:
Output:
<pre>M:
<pre>[[10, 14, 18]
[[10,11,12,13]
[11, 15, 19]
[14,15,16,17]
[12, 16, 20]
[18,19,20,21]]
[13, 17, 21]]</pre>

M transposed:
[[10,14,18]
[11,15,19]
[12,16,20]
[13,17,21]]</pre>


=={{header|ELLA}}==
=={{header|ELLA}}==