[#389739] Ruby Challenge — teresa nuagen <unguyen90@...>

Here is a ruby challenge for all you computer science lovers out there,

22 messages 2011/11/05
[#389769] Re: Ruby Challenge — "Jonan S." <jonanscheffler@...> 2011/11/05

Totally unrelated to any husker computer science programs right? Like

[#389905] Re: Ruby Challenge — Stephen Ramsay <sramsay.unl@...> 2011/11/09

Jonan S. wrote in post #1030330:

[#389907] Re: Ruby Challenge — aseret nuagen <unguyen90@...> 2011/11/09

> You mean like the professor for the course? Because that would be me .

[#389915] Re: Ruby Challenge — Robert Klemme <shortcutter@...> 2011/11/09

On Wed, Nov 9, 2011 at 4:52 AM, aseret nuagen <unguyen90@aim.com> wrote:

[#389792] Tricky DSL, how to do it? — Intransition <transfire@...>

I'd want to write a DSL such that a surface method_missing catches

18 messages 2011/11/06

[#389858] Compiling Ruby Inline C code - resolving errors — Martin Hansen <mail@...>

I am trying to get this Ruby inline C code http://pastie.org/2825882 to

12 messages 2011/11/08

[#389928] Forming a Ruby meetup group... — "Darryl L. Pierce" <mcpierce@...>

Where I work we have a local Ruby group that used to meet up, until the

12 messages 2011/11/09

[#389950] The faster way to read files — "Noé Alejandro" <casanejo@...>

Does anybody know which is the fastest way to read a file? Lets say

18 messages 2011/11/09

[#390064] referring to version numbers in a gem — Chad Perrin <code@...>

How do I specify and access a gem's version number within the code of the

28 messages 2011/11/11

[#390238] RVM problem, plz help — Misha Ognev <b1368810@...>

Hi, I have this problem:

15 messages 2011/11/16

[#390308] any command line tools for querying yaml files — Rahul Kumar <sentinel1879@...>

(Sorry, this is not exactly a ruby question).

11 messages 2011/11/18

[#390338] Newbie - cmd question — Otto Dydakt <ottodydakt@...>

I've literally JUST downloaded ruby from rubyinstaller.org.

21 messages 2011/11/19
[#390342] Re: Newbie - cmd question — Otto Dydakt <ottodydakt@...> 2011/11/19

OK thank you, I uninstalled & reinstalled, checking the three boxes at

[#390343] Re: Newbie - cmd question — "Ian M. Asaff" <ian.asaff@...> 2011/11/19

did you type "irb" first to bring up the ruby command prompt?

[#391154] Re: Newbie - cmd question — "Hussain A." <hahmad@...> 2011/12/12

Hi all,

[#391165] Re: Newbie - cmd question — Luis Lavena <luislavena@...> 2011/12/12

Hussain A. wrote in post #1036281:

[#390374] Principle of Best Principles — Intransition <transfire@...>

I seem to run into a couple of design issue a lot and I never know what is

16 messages 2011/11/20

[#390396] how to call Function argument into another ruby script. — hari mahesh <harismahesh@...>

Consider I have a ruby file called library.rb.

10 messages 2011/11/21

[#390496] How to make 1.9.2 my default version using RVM — Fily Salas <fs_tigre@...>

Hi,

25 messages 2011/11/24

[#390535] Is high-speed sorting impossible with Ruby? — "Gaurav C." <chande.gaurav@...>

Well, first of all, I'm new to Ruby, and to this forum. So, hello. :)

39 messages 2011/11/25
[#390580] Re: Is high-speed sorting impossible with Ruby? — Joao Pedrosa <joaopedrosa@...> 2011/11/27

Hi,

[#390593] Re: Is high-speed sorting impossible with Ruby? — "Gaurav C." <chande.gaurav@...> 2011/11/27

Joao Pedrosa wrote in post #1033884:

[#390600] Re: Is high-speed sorting impossible with Ruby? — Douglas Seifert <doug@...> 2011/11/27

A big gain can be had by disabling the garbage collector. Here is my best

[#390601] Re: Is high-speed sorting impossible with Ruby? — Douglas Seifert <doug@...> 2011/11/27

I've thrown various solutions up on github here:

[#390650] Loading a faulty ruby file - forcing this — Marc Heiler <shevegen@...>

Hi.

10 messages 2011/11/29

[#390689] Stupid question — James Gallagher <lollyproductions@...>

Hi everyone.

22 messages 2011/11/30

Re: Help me refactor my ruby code please

From: Sylvester Keil <sylvester.keil@...>
Date: 2011-11-05 11:12:11 UTC
List: ruby-talk #389750
On Nov 5, 2011, at 11:30 AM, Pavel Varela wrote:

> Right now a have a piece of code that i use in a rails app. Take a =
look
> at it:
>=20
> def calculate(days, size, terminal)
>  (0..days).inject {|sum, day| sum + costs(day, size, terminal)}
> end
>=20
> def costs(days, size, terminal)
>  if terminal =3D=3D "PLP"
>    if size =3D=3D 20
>      case days
>        when 0..5; 0
>        when 6; 75
>        when 7..8; 25
>        when 9..20; 75
>        else 125
>      end
>    elsif size =3D=3D 40
>      case days
>        when 0..5; 0
>        when 6; 150
>        when 7..8; 50
>        when 9..20; 150
>        else 250
>      end
>    end
>  elsif terminal =3D=3D "FCT"
>    if size =3D=3D 20
>      case days
>        when 0..5; 0
>        when 6; 75
>        when 7..8; 25
>        when 9..20; 115
>        when 21..30; 165
>        when 31..60; 150
>        else 135
>      end
>    elsif size =3D=3D 40
>      case days
>        when 0..5; 0
>        when 6; 150
>        when 7..8; 50
>        when 9..20; 230
>        when 21..30; 330
>        when 31..60; 300
>        else 270
>      end
>    end
>  end
> end
>=20
> puts calculate(14, 40, "FCT")
>=20
>=20
> The idea behind it's quite obvious, i think. Depending on a cost per
> day, container size and terminal i get the total cost.
>=20
> That case statement looks ugly for me, though i can't find a more
> elegant way. And when i imagine 10 more terminals... The previous
> version was like (without terminal and size):
>=20
> # COSTS =3D { 0..5 =3D> 0, [6] =3D> 75, [7, 8] =3D> 25, 9..20 =3D> =
115, 21..30 =3D>
> 165, 31..60 =3D> 250 }
> # COSTS.default =3D 0
>=20
> #def calculate(days)
> #  price =3D 0
> #  (0..days).each do |day|
> #    COSTS.each_key do |key|
> #      price +=3D COSTS[key] if key.include?(day)
> #    end
> #  end
> #  price
> #end
>=20
> but here the calculate method is ugly...
>=20
> Guys, do u have any idea what i could do with that? Thanks a lot =3D)

Personally, I'd prefer your older version. You can put your data in a =
nested hash and freeze it. Then you could use something like this =
calculate:

def calculate(days, size =3D 40, terminal =3D :FCT)
  (0 .. days).inject do |sum, day|
    sum + COSTS.deep_fetch(terminal, size, day, 0)
  end
end

Although a default cost of 0 is probably not in your best interest ;-)

This uses a #deep_fetch as proposed by Avdi Grimm on his blog:

http://avdi.org/devblog/2011/06/28/do-or-do-not-there-is-no-try/



In This Thread