# Ruby http://www.ruby-lang.org/en/
# Please show me a nicer/better way!
# jonelfâgmail.com

def basematrix(m)
   yl = m.length-1
   xl = m[0].length
   perms=xl ** yl

   0.upto(yl) do |y|
           1.upto(perms / (xl ** (yl-y))) do |n1|
               1.upto(xl ** (yl-y)) do |n2|
                   print m[y][n1.modulo(xl)-1]
               end
           end
       print "\n"
   end
end

m1 = [["a", "b", "c"],
   ["d", "e", "f"],
   ["g", "h", "i"],
   ["j", "k", "l"]]

m2 = [["a", "b", "c","d"],
   ["e", "f","g","h"],
   ["i", "j", "k","l"]]

basematrix(m1)
print "\n"
basematrix(m2)


Output:
aaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccc
dddddddddeeeeeeeeefffffffffdddddddddeeeeeeeeefffffffffdddddddddeeeeeeeeefffffffff
ggghhhiiiggghhhiiiggghhhiiiggghhhiiiggghhhiiiggghhhiiiggghhhiiiggghhhiiiggghhhiii
jkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkljkl

aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccccccccdddddddddddddddd
eeeeffffgggghhhheeeeffffgggghhhheeeeffffgggghhhheeeeffffgggghhhh
ijklijklijklijklijklijklijklijklijklijklijklijklijklijklijklijkl