for pretty output: change the line which call find method to be:

find(digits.split(//), operators.split(//).map{|e| " #{e} "}, target.to_i)


On 4/10/07, David Tran <email55555 / gmail.com> wrote:
> #  http://davidtran.doublegifts.com/blog/?p=11
>
>
> # Reuse permutations method on my Ruby Quiz (#106) Chess960 solution.
> def permutations(elements)
>   return [elements] if elements.size <= 1
>   result = []
>   elements.uniq.each do |p|
>     _elements = elements.dup
>     _elements.delete_at(elements.index(p))
>     permutations(_elements).each do |perm|
>       result << (perm << p)
>     end
>   end
>   result
> end
>
> def find(digits, operators, target)
>   raise "Error: More operators than digits." if (digits.size <= operators.size)
>   operators[digits.size - 2] = nil if (operators.size != digits.size - 1)
>   found = 0
>   stars = "*" * 25
>   perm = permutations(operators)
>   perm.each do |operator|
>     expression = digits.zip(operator).flatten.join
>     value = eval(expression)
>     if value == target
>       found += 1
>       puts stars
>       puts "#{expression} = #{value}"
>       puts stars
>     else
>       puts "#{expression} = #{value}"
>     end
>   end
>   puts "#{perm.size} possible equations tested."
>   puts "#{found} equations satisfied."
> end
>
> if ($0 == __FILE__)
>   digits    = ARGV[0] || "123456789"
>   operators = ARGV[1] || "+--"
>   target    = ARGV[2] || "100"
>
>   if (digits =~ /[^1-9]/ || operators =~ /[^-+*\/]/)
>     puts "Usage: #$0  digits  operators  target"
>     exit
>   end
>
>   find(digits.split(//), operators.split(//), target.to_i)
> end
>