Sha256: 029523e541a29b964903ae23092e99c8192976139f4cb2c4ecb7b7cbffe01b29

Contents?: true

Size: 1.78 KB

Versions: 1

Compression:

Stored size: 1.78 KB

Contents

# SetPartition

Ruby implementation of [Partition of a Set](http://en.wikipedia.org/wiki/Partition_of_a_set) based on paper *Efficient Generation of Set Partitions* by [Michael Orlov](mailto:orlovm@cs.bgu.ac.il)

## Installation

Add this line to your application's Gemfile:

    gem 'set_partition'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install set_partition

## Usage

    set_partition = SetPartition::Generator.new 4
    set_partition.start #=> [0,0,0,0]
    set_partition.next  #=> [0,0,0,1]
    set_partition.next  #=> [0,0,1,0]

    set_partition = SetPartition::FixedGenerator.new 4, 2
    set_partition.start #=> [0,0,0,1]
    set_partition.next  #=> [0,0,1,0]
    set_partition.next  #=> [0,0,1,1]

    set_partition = SetPartition::Array.new [:a, :b, :c, :d]
    set_partition.start  #=> [[:a,:b,:c,:d]]          # [0,0,0,0]
    set_partition.next   #=> [[:a,:b,:c], [:d]]       # [0,0,0,1]
    set_partition.next   #=> [[:a,:b,:d], [:c]]       # [0,0,1,0]

    set_partition = SetPartition::Array.new [:a, :b, :c, :d], 2
    set_partition.start #=> [[:a,:b,:c], [:d]]       # [0,0,0,1]
    set_partition.next  #=> [[:a,:b,:d], [:c]]       # [0,0,1,0]
    set_partition.next  #=> [[:a,:b], [:c,:d]]       # [0,0,1,1]

    set_partition = SetPartition::Array.new [:a, :b, :c, :d], 2
    set_partition.to_a
    #=>[
    #   [[:a,:b,:c], [:d]],
    #   [[:a,:b,:d], [:c]],
    #   [[:a,:b], [:c,:d]],
    #   [[:a,:c,:d], [:b]],
    #   [[:a,:c], [:b,:d]],
    #   [[:a,:d], [:b, :c]],
    #   [[:a], [:b,:c,:d]]
    # ]

## TODO
- The Ruby Way

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
set_partition-0.0.1 README.md