From: James Edward Gray II Date: 2005-12-12T11:49:53+09:00 Subject: 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/solving-kakuro-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