From: "Brian Schröder" Date: 2005-08-11T00:28:39+09:00 Subject: Re: Matrix type ? On 10/08/05, zimba-tm wrote: > Hello ruby fellows, > > Maybe you can help me. > > I'm currently trying to make a Sudoku solver for my first ruby program. > Sudoku is a nice 9x9 board game with simple rules, but it can be tough > to solve. More infos at http://www.sudoku.com/ if you want to launch a > RubyQuizz :-P > > What I would do, is use a kind of 2D Matrix that would represent the > board but couldn't find a satisfying method. > > This is my current implementation using arrays : > ---- > board = Array.new > > (1..9).each do |row_num| > board[row_num] = Array.new > (1..9).each do |col_num| > board[row_num][col_num] = "X" > end > end > ---- > If I "puts board", I'd like to have a 2D view instead. > How does puts work, does it call the to_str method ? > > Also, I'd like to access the console as a 2D Array too, > so that I can write on screen directly like a text-framebuffer. > > I have so many questions.. :-) > /me is refraining to flood ruby-talk > > -- > Cheers, > zimba > > http://zimba.oree.ch > > You should start with a board class. Something like this class Board def initialize @fields = Array.new(9) { Array.new(9) { :empty } } end def [](x,y) @fields[y][x] end def []=(x,y,v) @fields[y][x] = v end def to_s @fields.map{|row| row.map{|cell| cell.ljust(10) }.join(' ')}.join("\n") end end and go on from here. regards, Brian -- http://ruby.brian-schroeder.de/ Stringed instrument chords: http://chordlist.brian-schroeder.de/