Transpose an arbitrarily sized rectangular Matrix.




transpose: function [a][
    X: size a
    Y: size first a
    result: array.of: @[Y X] 0
 
    loop 0..X-1 'i [
        loop 0..Y-1 'j [
            result\[j]\[i]: a\[i]\[j]
        ]
    ]
    return result
]
 
arr: [
    [ 0 1 2 3 4  ]
    [ 5 6 7 8 9  ]
    [ 1 0 0 0 42 ]
]
 
loop arr 'row -> print row
print "-------------"
loop transpose arr 'row -> print row