From: Levin Alexander Date: 2005-12-05T01:29:33+09:00 Subject: Re: [QUIZ] Weird Numbers (#57) Solution On 12/4/05, Simon Strandgaard wrote: Here is my solution. (needs data-url support in your browser) I basically used the definition of a "weird number" to implement thesolution. This makes the code pretty, but also really, really slow. --- #!/usr/bin/ruby # Rubyquiz #57 -- Weird Numbers# -----------------------------# Levin Alexander module Enumerable def sum inject(0) {|s,elem| s+elem} endend class Array def subsets (0...2**length).collect {|i| values_at(*(0...length).find_all {|j| i&(1<0 }) } endend class Integer def abundant? divisors.sum > self end def semiperfect? divisors.subsets.any? { |set| set.sum == self } end def weird? abundant? and not semiperfect? end def divisors (1...self).select { |i| self % i == 0 } endend if __FILE__ == $0 0.upto(ARGV[0].to_i) { |i| if i.weird? puts i else warn "#{i} is not weird" if $DEBUG end }end