From: Gunther Diemant Date: 2011-03-18T06:59:18+09:00 Subject: Re: Replacing elements in an array? --0016e6dab13fa14547049eb4c5df Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable So a board is an array of arrays and offspring holds three boards. So @offspring[i] =3D [[row1],...,[row9]]. Waht you wanna check then is @offspring[i][j][k] =3D=3D 0 i is the board copy (from 0 to 3 in your code) j is the row index (from 0 to 8) k is the column index ( from 0 .. 8) What you probably wanna do is @offspring.each do |board_copy| board_copy.each |row| (0..8).each { |column| if row[column] =3D=3D 0 then row[column] =3D=3D = 9 } end end 2011/3/17 Jen > Hello, > > When I run > puts @offspring.inspect > > After populating it with copies of @board, but before attempting to repla= ce > the elements containing "_" the result is: > > [[[0, 4, 5, 9, 8, 7, 6, 2, 1], [1, 9, 2, 6, 5, 4, 3, 8, 7], [8, 7, 6, 3, = 2, > 1, 5, 4, 9], [5, 2, 9, 8, 1, 6, 4, 7, 3], [4, 3, 1, 7, 9, 2, 8, 5, 6], [6= , > 8, 7, 5, 4, 3, 1, 9, 2], [2, 5, 3, 4, 6, 9, 7, 1, 8], [7, 1, 8, 2, 3, 5, = 9, > 6, 4], [9, 6, 4, 1, 7, 8, 2, 3, 5]], [[0, 4, 5, 9, 8, 7, 6, 2, 1], [1, 9,= 2, > 6, 5, 4, 3, 8, 7], [8, 7, 6, 3, 2, 1, 5, 4, 9], [5, 2, 9, 8, 1, 6, 4, 7, = 3], > [4, 3, 1, 7, 9, 2, 8, 5, 6], [6, 8, 7, 5, 4, 3, 1, 9, 2], [2, 5, 3, 4, 6,= 9, > 7, 1, 8], [7, 1, 8, 2, 3, 5, 9, 6, 4], [9, 6, 4, 1, 7, 8, 2, 3, 5]], [[0,= 4, > 5, 9, 8, 7, 6, 2, 1], [1, 9, 2, 6, 5, 4, 3, 8, 7], [8, 7, 6, 3, 2, 1, 5, = 4, > 9], [5, 2, 9, 8, 1, 6, 4, 7, 3], [4, 3, 1, 7, 9, 2, 8, 5, 6], [6, 8, 7, 5= , > 4, 3, 1, 9, 2], [2, 5, 3, 4, 6, 9, 7, 1, 8], [7, 1, 8, 2, 3, 5, 9, 6, 4], > [9, 6, 4, 1, 7, 8, 2, 3, 5]], [[0, 4, 5, 9, 8, 7, 6, 2, 1], [1, 9, 2, 6, = 5, > 4, 3, 8, 7], [8, 7, 6, 3, 2, 1, 5, 4, 9], [5, 2, 9, 8, 1, 6, 4, 7, 3], [4= , > 3, 1, 7, 9, 2, 8, 5, 6], [6, 8, 7, 5, 4, 3, 1, 9, 2], [2, 5, 3, 4, 6, 9, = 7, > 1, 8], [7, 1, 8, 2, 3, 5, 9, 6, 4], [9, 6, 4, 1, 7, 8, 2, 3, 5]]] > > Let me know if you want me to send the rest of my code. > > Jen. > > > On 17/03/11 17:03, Jes=FAs Gabriel y Gal=E1n wrote: > >> On Thu, Mar 17, 2011 at 5:56 PM, Jen wrote: >> >>> Hello, >>> >>> This question is following on from my post 'making an array of arrays?'= , >>> but >>> as it is about replacing elements I have started a new thread. >>> >>> The reply to my last arrays related post did solve one problem, so than= ks >>> very much for that! >>> >>> So, I now have an @offspring array that takes copies of @board (a sudok= u >>> board) according to a population specified by the user. >>> >>> The aim is to populate all empty cells in @offspring with random number= s, >>> but for now I am just populating them with '9'. >>> Empty cells were represented by '")', but are now represented by '0' >>> Currently the population is fixed at 4, and my current code is: >>> >>> def find_empty! >>> #Loop through @offspring and where ever there is "_" put a random >>> number. >>> 4.times do |i| >>> if @offspring[i] =3D=3D 0 >>> then @offspring[i] =3D 9 >>> end >>> #For debugging with the test puzzle >>> puts @offspring.inspect >>> end >>> >>> When I print out offspring I expect the first element to be changed to = 9, >>> as >>> it was originally set to 0, this is however not the case. I'm sure I'm >>> being >>> very dumb, but if someone could please point me in the right direction >>> that >>> would be great. >>> >>> Note I have tried the same thing but using a for loop instead of the >>> .times >>> method. This gave me the same results. >>> >> Your method works, so maybe @offspring doesn't contain what you think. >> >> ruby-1.8.7-p334 :001> def find_empty! >> ruby-1.8.7-p334 :002?> #Loop through @offspring and where ever >> there is "_" put a random number. >> ruby-1.8.7-p334 :003> 4.times do |i| >> ruby-1.8.7-p334 :004> if @offspring[i] =3D=3D 0 >> ruby-1.8.7-p334 :005?> then @offspring[i] =3D 9 >> ruby-1.8.7-p334 :006?> end >> ruby-1.8.7-p334 :007?> #For debugging with the test puzzle >> ruby-1.8.7-p334 :008> puts @offspring.inspect >> ruby-1.8.7-p334 :009?> end >> ruby-1.8.7-p334 :010?> end >> =3D> nil >> ruby-1.8.7-p334 :011> @offspring =3D [0,0,0,0] >> =3D> [0, 0, 0, 0] >> ruby-1.8.7-p334 :012> find_empty! >> [9, 0, 0, 0] >> [9, 9, 0, 0] >> [9, 9, 9, 0] >> [9, 9, 9, 9] >> =3D> 4 >> ruby-1.8.7-p334 :013> @offspring >> =3D> [9, 9, 9, 9] >> >> Can you add the inspecting puts at the beginning of the method and >> show us the result? >> >> Jesus. >> >> > > > --0016e6dab13fa14547049eb4c5df--