Matrix transposition: Difference between revisions
Content added Content deleted
(→{{header|J}}: simplify) |
|||
Line 281: | Line 281: | ||
=={{header|D}}== |
=={{header|D}}== |
||
<lang d> |
<lang d>import std.stdio: writefln; |
||
import std. |
import std.string: join, format; |
||
import std.string ; |
|||
T[][] transpose(T)(T[][] mat) { |
|||
⚫ | |||
if(a.length < 1 || a[0].length < 1) |
|||
foreach (row; mat) |
|||
⚫ | |||
if (row.length != mat[0].length) |
|||
⚫ | |||
if(a[i].length != a[i-1].length) |
|||
return true; |
|||
} |
|||
} |
|||
if (!mat.length || !isRectangular(mat)) |
|||
T[][] transpose(T=real)(T[][] a) { |
|||
⚫ | |||
T[][] res ; |
|||
⚫ | |||
auto result = new T[][](mat[0].length, mat.length); |
|||
for(int i = 0 |
for (int i = 0; i < mat.length; i++) |
||
for(int j = 0 |
for (int j = 0; j < mat[0].length; j++) |
||
result[j][i] = mat[i][j]; |
|||
return result; |
|||
} else |
|||
⚫ | |||
return res ; |
|||
} |
} |
||
string toString(T |
string toString(T)(T[][] mat) { // for pretty print |
||
string[] |
string[] parts; |
||
foreach |
foreach (row; mat) |
||
parts ~= format("%8s", row)[1 .. $ - 1]; |
|||
return "\n<" ~ join(parts, "\n ") ~ ">"; |
|||
} |
} |
||
void main() { |
void main() { |
||
float[][] |
float[][] m = [[0.5,0,0,1], [0.0,0.5,0,0], [0.0,0,0.5,-1]]; |
||
writefln("M:", m.toString()); |
|||
auto mt = m.transpose(); |
|||
⚫ | |||
n = m.transpose() ; |
|||
⚫ | |||
}</lang> |
}</lang> |
||
=={{header|ELLA}}== |
=={{header|ELLA}}== |
||
Sample originally from ftp://ftp.dra.hmg.gb/pub/ella (a now dead link) - Public release. |
Sample originally from ftp://ftp.dra.hmg.gb/pub/ella (a now dead link) - Public release. |