私はクリス・パインの本「プログラミングを学ぶ」を使ってRubyを学ぼうとしています。第10章と使用例にたどり着くまで、本を読んでいる間、私は実際に興奮していました. さて、この章とその例だけで、この本を読み進めたいという私の興奮は完全になくなりました。この例では、どのようにタイルを数えようとしているのか、またはメソッドがcontinent_size world、x、yの属性で定義されているときに、なぜ彼がworld [y]、[x]を使用しているのかまったくわかりませんか? この例の再帰がどのように機能するかわかりません。作者が実際に何をしようとしていたかについて、誰かがこの例にもう少し光を当てることができますか?
M = 'land'
o = 'water'
world = [
[o,o,o,o,o,M,o,o,o,o,o],
[o,o,o,o,M,M,o,o,o,o,o],
[o,o,o,o,o,M,o,o,M,M,o],
[o,o,o,M,o,M,o,o,o,M,o],
[o,o,o,o,o,M,M,o,o,o,o],
[o,o,o,o,M,M,M,M,o,o,o],
[M,M,M,M,M,M,M,M,M,M,M],
[o,o,o,M,M,o,M,M,M,o,o],
[o,o,o,o,o,o,M,M,o,o,o],
[o,M,o,o,o,M,M,o,o,o,o],
[o,o,o,o,o,M,o,o,o,o,o]]
def continent_size world, x ,y
if x < 0 or x > 10 or y < 0 or y > 10
return 0
end
if world[y][x] != 'land'
return 0
end
size = 1
world [y][x] = 'counted land'
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)