[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Fwd: [SOLUTION] RubyQuiz #7

James Gray

11/16/2004 2:27:00 PM

(forwarded to Ruby Talk by JEG2)

Begin forwarded message:

> From: Junghyun Kim <ikspres@gmail.com>
> Date: November 16, 2004 5:46:59 AM CST
> To: rubyquiz@grayproductions.net
> Subject: [SOLUTION] RubyQuiz #7
> Reply-To: Junghyun Kim <ikspres@gmail.com>
>
> Hi.
> I am Junghyun Kim,
> Here is my solution for rubyquiz #7
> I used recursion, it's very simple but brute force method.
>
> Thanks for the interesting quiz.
>
>
> ## Code Begin##
> def f(target, values)
> return 0,"0" if values.nil? or values.length == 0
> return (target-values[0]).abs, "#{values[0]}" if values.length
> == 1
>
> mgap,mexpr = 1000, " "
> for i in 0 ... values.length
> values2 = Array.new(values)
> value = values2.delete_at(i)
>
>
> # For +
> gap, expr = f(target - value, values2)
> mgap,mexpr=gap, "#{expr}+#{value}" if gap <mgap
> break if mgap == 0
>
> # For -
> gap,expr = f(value-target, values2)
> mgap,mexpr=gap, "#{value}-#{expr}" if gap <mgap
> break if mgap == 0
>
> gap,expr = f(target+value, values2)
> mgap,mexpr=gap, "#{expr}-#{value}" if gap <mgap
> break if mgap == 0
>
> #For *
> if value != 0
> gap,expr = f(target/value, values2)
> mgap,mexpr=gap, "(#{expr})*#{value}" if gap
> <mgap
> break if mgap == 0
> end
>
> # For /
> if target != 0
> gap,expr = f(value/target, values2)
> mgap,mexpr=gap, "#{value}/(#{expr})" if gap
> <mgap
> break if mgap == 0
> end
>
> gap,expr = f(target*value, values2)
> mgap,mexpr=gap, "(#{expr})/#{value}" if gap <mgap
> break if mgap == 0
>
> end
> return mgap, mexpr
> end
>
>
> def countDown(target, values)
> gap,expr = f(target.to_f, values.collect {|v| v.to_f})
> print "gap = #{gap}\n"
> print "expr = ",expr,"\n"
> end
>
> #sample
> countDown(900, [25, 1,2,3,4,5])
>
> ## Code End##
>