[#401849] If statement — Masoud Ahmadi <lists@...>

Will anyone be able to point out what I am doing wrong.

15 messages 2012/12/02

[#401987] Trying to get "translator" to work — JD KF <lists@...>

So, basically, I'm trying to get the below code to work properly for

12 messages 2012/12/06

[#402012] Need help to select some listbox item in different listbox together — Jonathan Masato <lists@...>

Hello,

10 messages 2012/12/07

[#402045] if n belongs to set a and m belongs to set b repeat some steps, How? — "zubair a." <lists@...>

We can do so in java and similar languages like:

11 messages 2012/12/08

[#402078] Time.new(2001, 12, 3).to_i returns wrong value — Robert Buck <lists@...>

I am doing something that not many do, I am writing a database driver

9 messages 2012/12/09

[#402145] How I can create/extract a variable/hash into the current binding in Ruby? — Ramon de C Valle <rcvalle@...>

Hi,

12 messages 2012/12/12

[#402205] Wondering About Flatiron School — "Kevin Y." <lists@...>

Hi everyone!,

35 messages 2012/12/15
[#402207] Re: Wondering About Flatiron School — Chad Perrin <code@...> 2012/12/15

On Sat, Dec 15, 2012 at 11:51:08AM +0900, Kevin Y. wrote:

[#402214] Ruby quick reference arranged in ASCII sequence? — Old Grantonian <lists@...>

As a ruby beginner, I would be grateful for any links to a ruby

17 messages 2012/12/15

[#402226] print - and strip text between tags using Nokogiri — Paul Mena <lists@...>

I'm a Ruby Newbie trying to write a program to process thousands of HTML

13 messages 2012/12/15

[#402332] Perl to Ruby: regex captures to assignment. — "Derrick B." <lists@...>

Hello all,

37 messages 2012/12/19
[#402342] Re: Perl to Ruby: regex captures to assignment. — "Derrick B." <lists@...> 2012/12/20

First of all, thanks for the fast responses!

[#402352] Re: Perl to Ruby: regex captures to assignment. — Robert Klemme <shortcutter@...> 2012/12/20

On Thu, Dec 20, 2012 at 1:38 AM, Derrick B. <lists@ruby-forum.com> wrote:

[#402357] Re: Perl to Ruby: regex captures to assignment. — "Derrick B." <lists@...> 2012/12/20

Robert Klemme wrote in post #1089733:

[#402359] trying to strip characters from a line — Paul Mena <lists@...>

I'm reading a table from a MySQL database and then processing it row by

18 messages 2012/12/20

[#402394] simple division: -9 / 5 = -2 what? — "Derrick B." <lists@...>

$ irb

13 messages 2012/12/22

[#402412] POLS and string-handling — Paul Magnussen <lists@...>

Hi,

14 messages 2012/12/22

[#402460] "Open" dialog of Windows — "Damián M. González" <lists@...>

Hi guys, been researching about pop up the "open" file dialog of

11 messages 2012/12/24

[#402466] How do I install Ruby on my Ubuntu 12.10 partition. — Kaye Ng <lists@...>

I already have Ruby installed on my Windows 7 partition.

23 messages 2012/12/25

[#402510] Ruby Association Certified Ruby Programmer — Sean Westfall <lists@...>

How well respected is this certification in the industry: Ruby

27 messages 2012/12/27
[#402528] Re: Ruby Association Certified Ruby Programmer — Peter Hickman <peterhickman386@...> 2012/12/27

On 27 December 2012 01:28, Sean Westfall <lists@ruby-forum.com> wrote:

[#402555] numeric? — Brandon Weaver <keystonelemur@...>

I've found a bit of an annoyance trying to find out if a number is numeric

20 messages 2012/12/27

[#402580] Ruby Koans regarding Hashes. — "Derrick B." <lists@...>

I am trying to understand this, so let me know how I do. :) I know

18 messages 2012/12/28

[#402609] can't open new ruby program under "new" context menu — "Lee V." <lists@...>

I'm stuck on the new version at trying to do something very simple.

10 messages 2012/12/28

[#402642] require "test/unit" — "Mattias A." <lists@...>

Hi,

17 messages 2012/12/29
[#402667] Re: require "test/unit" — "Mattias A." <lists@...> 2012/12/31

Hi Dami=C3=A1n M. Gonz=C3=A1lez!

[#402747] Re: require "test/unit" — "Derrick B." <lists@...> 2013/01/04

Mattias A. wrote in post #1090700:

[#402749] Re: require "test/unit" — sto.mar@... 2013/01/04

Am 04.01.2013 19:48, schrieb Derrick B.:

Re: if n belongs to set a and m belongs to set b repeat some steps, How?

From: "Jan E." <lists@...>
Date: 2012-12-08 23:38:15 UTC
List: ruby-talk #402065
Thanks a lot.

And I find it great that you really want to learn Ruby in depth. Many
people just keep their habits from their previous language and merely
change the syntax. This way they'll of course never experience the
capabilities of Ruby or get to know new ideas.

I think the key to "the Ruby way" is to forget the low-level procedural
style we all know from languages like Java or C. When you want to do
something with arrays in Java, you have to do it "by hand". You have to
actually go through the elements and put them into the desired place.
That's because Java arrays (and the derived classes) are basically
limited to "assign a value to an index" and "get the length".

Ruby, on the other hand, is much more expressive. It borrows many
powerful features from functional languages like Haskell ("map",
"select", "reduce", "take", "partition" etc.), and there are a lot of
specialized methods. So whatever you want to do, there's probably a
method or combination of methods for that. You rarely need to fumble
with indices and move variables around.

A good way of learning Ruby is to regularly read the API reference
(http://www.ruby-doc.org). After a while, you'll know the methods and
what you can do with them. You should also try to think in more abstract
terms. Instead of "I'll have this loop here and that counter there",
think about what you actually want to do like for example "I want to get
the first n elements of an array". In the long run, you might also look
into functional languages like the beautiful Haskell. It really teaches
you a different way of thinking, and I got a lot of insights from it.

Whatever you do, have fun. :-)


Regarding your code:

You can simplify the method a lot if you work with subarrays instead of
passing the original array and the current indices around.

So the methods should just be

def merge_sort list
  ...
end

def merge left, right
  ...
end

The main thing that makes the code long and complicated is obviously the
index arithmetic. But there's not really much you can do about it apart
from completely getting rid of it. Since the counters depend on the 
order of the elements, you cannot use Ruby's counting methods ("upto", 
"each"), because those all count "statically" in a fixed pattern.

By the way, method names in Ruby usually use underscores and not
camelCase like in Java. And you don't need to initialize arrays with a
certain length. Just start with an empty array: []. You should also use 
the keywords "and" and "or" instead of "&&" and "||". The latter have a 
high precendence and are rather used for technical stuff like setting a 
default value. The keywords are what you'd use for "if" statements and 
logical expressions.

I've attached a modified version of your code.

Attachments:
http://www.ruby-forum.com/attachment/7944/merge_sort_update.txt


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

In This Thread