Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   Calculating single-digit summands (http://www.velocityreviews.com/forums/t826857-calculating-single-digit-summands.html)

 draq 12-11-2005 09:53 PM

Calculating single-digit summands

I have tried to make an algorithm that finds all possible combinations
of single-digit summands for a number. After an afternoon of hard and
desperate work I got something inefficient (although it works). Maybe
someone has a better idea. The link to the algorithm:
http://secam.blogspot.com/2005/12/so...ro-part-i.html

 James Edward Gray II 12-12-2005 02:49 AM

Re: Calculating single-digit summands

On Dec 11, 2005, at 3:57 PM, draq wrote:

> I have tried to make an algorithm that finds all possible combinations
> of single-digit summands for a number. After an afternoon of hard and
> desperate work I got something inefficient (although it works). Maybe
> someone has a better idea. The link to the algorithm:
> http://secam.blogspot.com/2005/12/so...ro-part-i.html

One thing that your code could really use is better names. Variables
like "arr", "t", and even "calc" tell me very little, as I'm trying

Next, there's a lot more iterators than just each() and using them
can make your code more expressive. Some examples:

def sum (arr)
i = 0
arr.each do |k| i += k end
i
end

# ... or ...

def sum( enum )
inject { |sum, n| sum + n }
end

######

arrj.each do |a|
arri.delete(a) if sum(a) != number
end

# ... or ...

arrj.delete_if { |a| sum(a) != number }

You can also simplify lines like the following by using destructive
method calls:

arri = arri.uniq

# ... or ...

arri.uniq!

Hope that gives you some ideas.

James Edward Gray II

 Dan Diebolt 12-12-2005 03:14 AM

Re: Calculating single-digit summands

--0-1690795590-1134357246=:46771
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

># ... or ...
>def sum( enum )
> inject { |sum, n| sum + n }
>end

=20
Don't you need enum. ?
=20
def sum(enum)
enum.inject {|sum,n| sum+n}
end

=09
---------------------------------
Yahoo! Shopping
Find Great Deals on Holiday Gifts at Yahoo! Shopping=20
--0-1690795590-1134357246=:46771--

 James Edward Gray II 12-12-2005 03:18 AM

Re: Calculating single-digit summands

On Dec 11, 2005, at 9:14 PM, Dan Diebolt wrote:

>> # ... or ...
>> def sum( enum )
>> inject { |sum, n| sum + n }
>> end

>
> Don't you need enum. ?
>
> def sum(enum)
> enum.inject {|sum,n| sum+n}
> end

Oops. Yes. Thank you.

James Edward Gray II

 All times are GMT. The time now is 09:01 AM.