Hey Fred,

Thanks for responding.

I was assuming that because of the line:

continent_size world, x, y

x defined the row and y defined the array value within that row.  Is
that not true?


world[x][y] and world[y][x] only outputs the right value because 5, 5
is right smack in the middle of the array of arrays.  If you change it
to 4, 3 and run it with world[x][y] and then try it with world[y][x]
you get two different values.  I'm still not sure why the code starts
with x, y and then get's switched to [y][x] (I've pasted the original
below showing the [y][x] values.  Am I just being dense?:

# These are just to make the map
# easier for me to read. "M" is
# visually more dense than "o".

M = ' land '
o = ' water '
  world = [[o,o,o,o,o,o,o,o,o,o,o],
           [o,o,o,o,M,M,o,o,o,o,o],
           [o,o,o,o,o,o,o,o,M,M,M],
           [o,o,o,M,o,o,o,o,o,M,o],
           [o,o,o,M,o,M,M,o,o,o,o],
           [o,o,o,o,M,M,M,M,o,o,o],
           [o,o,o,M,M,M,M,M,M,M,o],
           [o,o,o,M,M,o,M,M,M,o,o],
           [o,o,o,o,o,o,M,M,o,o,o],
           [M,M,o,o,o,M,o,o,o,o,o],
           [o,o,o,o,o,o,o,o,o,o,o]]

def continent_size world, x, y
  if x > 10 && y > 10
   size = 0
  else
    if world[y][x] != ' land '
     return 0
    end
  end
# Either it ' s water or we already
# counted it, but either way, we don ' t
# want to count it now.


# So first we count this tile...
size = 1
world[y][x] = ' counted land '
# ...then we count all of the
# neighboring eight tiles (and,
# of course, their neighbors by
# way of the recursion).
size = size + continent_size(world, x-1, y-1)
size = size + continent_size(world, x , y-1)
size = size + continent_size(world, x+1, y-1)
size = size + continent_size(world, x-1, y )
size = size + continent_size(world, x+1, y )
size = size + continent_size(world, x-1, y+1)
size = size + continent_size(world, x , y+1)
size = size + continent_size(world, x+1, y+1)
size
end

puts continent_size(world, 5, 5)




On Jan 23, 1:38 pm, Frederick Cheung <[email protected]>
wrote:
> On Jan 23, 8:34 pm, jordantheous <[email protected]> wrote:
>
> > *From Chris Pine, Learn to Program
>
> > Hey All --
> > In the below source code they array is called in the method as x, y,
> > but the "if" statements are looking to [y][x].  Can anyone explain to
> > me why they are switched?  If you make them [x][y] it still outputs
> > the correct number (23).
> > Thanks in advance,
> > Jordan
>
> What you've got there is an array of rows (rather than an actual 2D
> construct), so it's normal that [y][x] first selects a row, then an
> element in that row.
>
> Fred
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to