![]() |
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 |
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 to read you code. 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 |
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-- |
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 07:02 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.