Feature #10726 » implement_set_powerset.patch
| NEWS | ||
|---|---|---|
| 
     === Stdlib updates (outstanding ones only) 
   | 
||
| 
     * lib/set.rb 
   | 
||
| 
       * New methods: 
   | 
||
| 
         * Set#powerset returns set of all subsets of +self+. 
   | 
||
| 
     === Stdlib compatibility issues (excluding feature bug fixes) 
   | 
||
| 
     * lib/webrick/utils.rb 
   | 
||
| lib/set.rb | ||
|---|---|---|
| 
         end 
   | 
||
| 
       end 
   | 
||
| 
       # Returns set of all subsets of +self+. 
   | 
||
| 
       # 
   | 
||
| 
       # e.g.: 
   | 
||
| 
       # 
   | 
||
| 
       #   require 'set' 
   | 
||
| 
       #   set = Set[1, 2].powerset 
   | 
||
| 
       #   p set     # => #<Set: {#<Set: {}>, 
   | 
||
| 
       #             #            #<Set: {1}>, 
   | 
||
| 
       #             #            #<Set: {2}>, 
   | 
||
| 
       #             #            #<Set: {1, 2}>}> 
   | 
||
| 
       def powerset 
   | 
||
| 
         (0 .. 2 ** length - 1).map { |n| 
   | 
||
| 
           select.with_index { |_, i| (n >> i) & 1 == 1 }.to_set 
   | 
||
| 
         }.to_set 
   | 
||
| 
       end 
   | 
||
| 
       InspectKey = :__inspect_key__         # :nodoc: 
   | 
||
| 
       # Returns a string containing a human-readable representation of the 
   | 
||
| test/test_set.rb | ||
|---|---|---|
| 
         } 
   | 
||
| 
       end 
   | 
||
| 
       def test_powerset 
   | 
||
| 
         assert_equal(Set[1, 2].powerset, Set[Set[], Set[1], Set[2], Set[1, 2]]) 
   | 
||
| 
         assert_equal( 
   | 
||
| 
           Set[1, 2, 3].powerset, 
   | 
||
| 
           Set[Set[], Set[1], Set[2], Set[3], Set[1, 2], Set[2, 3], Set[3, 1], Set[1, 2, 3]] 
   | 
||
| 
         ) 
   | 
||
| 
       end 
   | 
||
| 
       def test_taintness 
   | 
||
| 
         orig = set = Set[1,2,3] 
   | 
||
| 
         assert_equal false, set.tainted? 
   | 
||
| 
     -  
   | 
||
- « Previous
 - 1
 - …
 - 3
 - 4
 - 5
 - Next »