Hi -- On 28/10/2007, Victor Reyes <victor.reyes / gmail.com> wrote: > Hello Team, > > On my quest to learn Ruby, I implemented a known algorithm to solve an odd > nXn magic square. > I tested my code using a 3x3 and a 5x5 magic squares. > The problem that I am having is that I hard-code the initialization matrix. > In other words, if it is a 3x3 I define: > > mm = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] > > For a 5 x 5 I define : > > mm = [[0,0,0, 0, 0], [0,0,0, 0, 0], [0,0,0, 0, 0],[0,0,0,0,0],[0,0,0,0,0]] > > I want to be able to solve any size odd magic square. To do so, I need to be > able to define my matrix dynamically and on demand. > Can anyone tell me how to do that? > > Attached is my current code. Please feel free to criticize it and make > recommendations. My disclaimer: I am a Ruby apprentice. > > Thank you > > Victor > > #!/usr/local/bin/ruby -d -W0 > > def mag(size) > r = 0 # row > c = 0 # column > index = 0 # pointer > > # mm = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] > mm = [[0,0,0, 0, 0], [0,0,0, 0, 0], [0,0,0, 0, > 0],[0,0,0,0,0],[0,0,0,0,0]] You can just do something like this: mm = [] size.to_i.times { mm << Array.new(size.to_i,0) } Incidentally, have you looked into the numerous Matrix/math libs already defined in Ruby? -- Thomas Adam