What is a good ruby tutorial / book for a beginner?

I have been reading Chris Pine's book for a while now and I'm stuck at
the chapter where I have to write my own sorting method. All the code I
tried don't work and when I searched for sorting algorithms and programs
in ruby, ALL the source code I had a look at had a couple of elements in
it that the book I'm reading hasn't taught yet...I think something is
missing... You guys are masters of this language and have already learnt
it so I'd want to know how you learnt it and what books you read and if
they are downloadable.Downloadable ebooks would be of great help to me,
thank you. :slight_smile:

···

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

Look at these two tutorials:

http://www.devdaily.com/blog/post/ruby/ruby-how-sort-array-objects-one-field-column

http://www.devdaily.com/blog/post/ruby/how-sort-ruby-array-objects-multiple-class-fields-attributes

I learned more from reading these two entries than in any book when it came to sorting. In particular, I fell in love with the multi class field sort. I have been able to do some sorting on data that I could have never done otherwise. Walk through the tutorials, if you have an IDE step through the code and watch the array and values that get put into it and experiment with various sorts.

Wayne

···

On Dec 8, 2011, at 8:10 PM, Samuel Mensah wrote:

I have been reading Chris Pine's book for a while now and I'm stuck at
the chapter where I have to write my own sorting method. All the code I
tried don't work and when I searched for sorting algorithms and programs
in ruby, ALL the source code I had a look at had a couple of elements in
it that the book I'm reading hasn't taught yet..

I haven't learnt classes or hashes yet... It is in the next 2 chapters
of the book... :confused:

···

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

Thanks a ton Russel :slight_smile: I downloaded the book, going to give it a good
read and see what I find out :slight_smile: thanks again

···

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

Hi, Sam :slight_smile:

This is a good exercise! When I first tried to sort an array, it hurt my
brain (literally, it was physically painful) I had to look at a solution
and draw it out on paper to be able to understand it. So don't sweat it,
just realize you have to be dedicated :slight_smile:

Now, when you're starting out, you'll have to deal with people using things
you haven't learned about yet. That's unfortunate, but it's a just a fact.
Don't be put off by them, try to understand what they're doing, even if you
don't understand how they're doing it. You'll learn the how in time, and
the ability to understand the "what" without the "how" will be very
powerful.

Now, in the case of hashes, they're just just a collection, like arrays,
but the difference is that you access them by some arbitrary object (called
a key, usually a symbol or a string), rather than an integer index.

I advocate playing around with some cards, pay attention to yourself when
you sort them. What do you do? Can you articulate those steps so that if
you described it to a human, they could understand them? Can you then take
those steps and write them in code so that a machine can understand them?

Anyway, here is one I just wrote. I try to use very few array methods, and
whenever I think something might be confusing (ie "why is he doing that?")
I pull it out and make it into a method whose name explains why I'm doing
it. So if you read from the bottom, the implementation should be pretty
obvious "for each element, insert it in sorted order into a new array"
That's pretty straightforward :slight_smile: Of course, now we have to figure out what
"insert it in sorted order" means, so go up to the next method, see if you
can understand how it works. If you understand each of the pieces, you
understand the whole. You can also feel free to pull out the method calls
and inline them if you think that will be more helpful for you.

def can_access?(array, index)
  index < array.size
end

def make_a_hole(array, hole_index)
  current_index = array.size
  while hole_index < current_index
    array[current_index] = array[current_index-1]
    current_index -= 1
  end
end

def insert(array, add_index, to_add)
  make_a_hole(array, add_index)
  array[add_index] = to_add
end

def ordered_insert(sorted_array, to_add)
  add_index = 0
  while can_access?(sorted_array, add_index) && sorted_array[add_index] <
to_add
    add_index += 1
  end
  insert sorted_array, add_index, to_add
end

def sort(array)
  sorted =
  array.each do |to_add|
    ordered_insert sorted, to_add
  end
  sorted
end

a = [1, 4, 2, 5, 3]
sort a # => [1, 2, 3, 4, 5]
a # => [1, 4, 2, 5, 3]

···

On Thu, Dec 8, 2011 at 8:10 PM, Samuel Mensah <sasogeek@yahoo.com> wrote:

I have been reading Chris Pine's book for a while now and I'm stuck at
the chapter where I have to write my own sorting method. All the code I
tried don't work and when I searched for sorting algorithms and programs
in ruby, ALL the source code I had a look at had a couple of elements in
it that the book I'm reading hasn't taught yet...I think something is
missing... You guys are masters of this language and have already learnt
it so I'd want to know how you learnt it and what books you read and if
they are downloadable.Downloadable ebooks would be of great help to me,
thank you. :slight_smile:

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

I really liked Beginning Ruby by Peter Cooper.
If I remember correctly at that point in Chris Pine's book you have
learned about the min and max methods yes?

···

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

I would recommend The Well Grounded Rubyist by David Black. His book is excellent!

···

--
Russell
Sent with Sparrow (http://www.sparrowmailapp.com/?sig\)

On Thursday, December 8, 2011 at 9:45 PM, Samuel Mensah wrote:

I haven't learnt classes or hashes yet... It is in the next 2 chapters
of the book... :confused:

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

Peter also teaches an online course that uses his book at http://learn.codelesson.com/

Wayne

···

On Dec 8, 2011, at 11:02 PM, Nick Sandberg wrote:

I really liked Beginning Ruby by Peter Cooper.