*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]. Can anyone explain to me why they are switched? If you make them [y] it still outputs the correct number (23). Thanks in advance, Jordan
## Start of Example
# 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] != ' 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] = ' 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)