Matrix transposition: Difference between revisions

(→‎{{header|J}}: simplify)
Line 281:
 
=={{header|D}}==
<lang d>moduleimport mxtransstd.stdio: writefln;
import std.stdiostring: join, format;
import std.string ;
 
boolT[][] isRectangulartranspose(T)(T[][] amat) {
if( static bool isRectangular(a)T[][] mat) {
if(a.length < 1 || a[0].length < 1)
foreach (row; mat)
return false ;
for(int i = 1 ; i < a if (row.length; i++!= mat[0].length)
return false ;
if(a[i].length != a[i-1].length)
return false return true;
return true ;}
}
 
if (!mat.length || !isRectangular(mat))
T[][] transpose(T=real)(T[][] a) {
throw new Exception("Transpose Error") ;
T[][] res ;
 
if(isRectangular(a)){
resauto result = new T[][](amat[0].length, amat.length) ;
for (int i = 0 ; i < amat.length ; i++)
for (int j = 0 ; j < amat[0].length ; j++) {
res result[j][i] = amat[i][j] ;
return }result;
} else
throw new Exception("Transpose Error") ;
return res ;
}
 
string toString(T=real)(T[][] amat) { // for pretty print
string[] sparts;
foreach(e (row; amat)
s parts ~= format("%8s", erow)[1 .. $ - 1] ;
return return "\n<" ~ join(sparts, "\n ") ~ ">" ;
}
 
void main() {
float[][] n, m = [[0.5,0,0,1], [0.0,0.5,0,0], [0.0,0,0.5,-1]] ;
writefln("M:", m.toString());
 
writefln(" m auto mt = ", m.toStringtranspose()) ;
writefln("M n (m's transpose) = transposed:", nmt.toString()) ;
n = m.transpose() ;
writefln(" n (m's transpose) = ", n.toString()) ;
}</lang>
 
=={{header|ELLA}}==
Sample originally from ftp://ftp.dra.hmg.gb/pub/ella (a now dead link) - Public release.
Anonymous user