From: Jen Date: 2011-03-18T06:45:05+09:00 Subject: Re: Replacing elements in an array? Hello, When I run puts @offspring.inspect After populating it with copies of @board, but before attempting to replace 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�s Gabriel y Gal�n 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 thanks >> very much for that! >> >> So, I now have an @offspring array that takes copies of @board (a sudoku >> board) according to a population specified by the user. >> >> The aim is to populate all empty cells in @offspring with random numbers, >> 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] == 0 >> then @offspring[i] = 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] == 0 > ruby-1.8.7-p334 :005?> then @offspring[i] = 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 > => nil > ruby-1.8.7-p334 :011> @offspring = [0,0,0,0] > => [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] > => 4 > ruby-1.8.7-p334 :013> @offspring > => [9, 9, 9, 9] > > Can you add the inspecting puts at the beginning of the method and > show us the result? > > Jesus. >