[#407882] Ruby extremely slow compared to PHP — Mick Jagger <lists@...>

Hello there, how are you? Hope you are fine. I am a PHP programmer

17 messages 2013/06/02

[#407908] TCPServer/Socket and Marshal problem — Panagiotis Atmatzidis <atma@...>

Hello,

18 messages 2013/06/03

[#407946] Is rubyquiz.com dead? — Alphonse 23 <lists@...>

Thread title says everything.

18 messages 2013/06/04

[#408012] Need help understanding recursion. — pedro oliva <lists@...>

Ive been reading Chris Pine's book 'Learn to Program' and its been going

11 messages 2013/06/06

[#408129] Getting Started With Development — Chamila Wijayarathna <cdwijayarathna@...>

I'm new to Ruby Development. I downloaded source from Github, but couldn't

24 messages 2013/06/11
[#408131] Re: Getting Started With Development — Per-erik Martin <lists@...> 2013/06/11

Ruby is often installed on linux, or can be easily installed with the

[#408146] Re: Getting Started With Development — "Chamila W." <lists@...> 2013/06/11

Per-erik Martin wrote in post #1112021:

[#408149] Re: Getting Started With Development — "Carlo E. Prelz" <fluido@...> 2013/06/11

Subject: Re: Getting Started With Development

[#408198] NokoGiri XML Parser — "Devender P." <lists@...>

Hi,

11 messages 2013/06/13

[#408201] trying to load a .rb file in irb — "Eric D." <lists@...>

I am trying to load a ruby program into irb and it will not load.

12 messages 2013/06/13

[#408205] Can I use Sinatra to render dynamic pages? — Ruby Student <ruby.student@...>

Hell Team,

18 messages 2013/06/13
[#408219] Re: Can I use Sinatra to render dynamic pages? — Nicholas Van Weerdenburg <vanweerd@...> 2013/06/14

You should be able to do this without JavaScript by using streaming.

[#408228] Re: Can I use Sinatra to render dynamic pages? — Ruby Student <ruby.student@...> 2013/06/14

Well, I got some good suggestions from everyone here. I thank you all for

[#408275] Compare and sort one array according to another. — masta Blasta <lists@...>

I have two arrays of objects that look something like this:

14 messages 2013/06/17

[#408276] Comparing objects — "Thom T." <lists@...>

How do I compare two objects in Ruby, considering only attributes

15 messages 2013/06/17

[#408307] getting the most out of Ruby — robin wood <lists@...>

I write a lot of scripts in Ruby, most are small simple things but some

13 messages 2013/06/18

[#408309] Creating ruby script exe — Rochit Sen <lists@...>

Hi All,

17 messages 2013/06/18

[#408357] Beginners problem with database and datamapper — cristian cristian <lists@...>

Hi all!

28 messages 2013/06/20

[#408437] How do I input a variable floating point number into Ruby Programs — "Michael P F." <lists@...>

I want to evaluate the following interactively:

10 messages 2013/06/23

[#408518] #!/usr/bin/env: No such file or directory — Todd Sterben <lists@...>

I am new to both linux and ruby. I am using Ubuntu and Ruby 1.9

17 messages 2013/06/27

[#408528] Designing a Cabinet class — Mike Vezzani <lists@...>

Hello all,

12 messages 2013/06/27

[#408561] Find elment in array of hashes — Rodrigo Lueneberg <lists@...>

array = {:id=>1, :price =>0.25} # index[0]

23 messages 2013/06/28

Re: Need help understanding recursion.

From: Alphonse 23 <lists@...>
Date: 2013-06-06 09:31:44 UTC
List: ruby-talk #408020
Sorry, I realized that I should probably help you understand your
example as well.

----------------------

M = 'land'
o = 'water'

# So world is a 2d array, where M equals land and o equals water. The x
axis goes from left to right, and the y axis going from top to bottom.
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]]

# continent_size takes in the 2d array, and a beginning coordinate on
the map (x, y).
def continent_size world, x ,y

  # if current x or y is greater than 10 (10 would be beyond the bounds
of the array map) or less than 0 (there are no negative coordinates in
this example), then it returns 0.
  if x < 0 or x > 10 or y < 0 or y > 10
    return 0 # This condition(base-case) represents the bounds of the
map.
  end

  # if current coordinate is not equal to land than it returns 0.
  if world[y][x] != 'land'
    return 0
  end

  size = 1 # each coordinate equals 1 unit of measure.
  world [y][x] = 'counted land' # after a coordinate is visited it is
marked with 'counted land' so the method doesn't read the same
coordinate twice.

  # after marking the current coordinate with 'counted land' the method
calls itself on all adjacent coordinates. Adding 1 to size, marking a
coordinate that is land with 'counted land' if land is found, or adding
0 if 'water'/o is discovered. If 'counted land', 'water', or the bounds
of the map are discovered this is where the method terminates. If 'land'
is discovered, then it continues on to the other adjacent coordinates.
  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 # this is what is returned.

end

puts continent_size(world, 5, 5)
# So what you get is the size of a land mass on the 10x10 map. Try
putting continent_size(world, 9, 2). It return 3 for the little island
in the top right. If you set the coordinates to a water coordinate, it
always returns 0.

This really isn't the best example to illustrate the concept of
recursion. It is simple though. Look up the towers of hanoi, that's a
much better (aswell as more common) elementary exercise to teach the
concept.

Hope this helped again.

pedro oliva wrote in post #1111496:
> Ive been reading Chris Pine's book 'Learn to Program' and its been going
> great up until I got to chapter 10 on recursion and thus has completely
> taken all my excitement from going forward. I understand that recursion
> is a method that will continue to call itself till there is an attribute
> to cause it to exit the loop. The example in the book though has me all
> sorts of confused. Can someone walk me through the example and bring
> back the excitement to continue to learn Ruby!

-- 
Posted via http://www.ruby-forum.com/.

In This Thread