View Source Permutation protocol (permutation v0.2.0)

Permutation defines a protocol for calculating all possible permutations of a given type of data. The protocol may be implemented for any type of custom data which requires the calcuation of permutations (or combintations).

examples

Examples

MapSets are used when members have no inherent order:

iex> mapset = MapSet.new([:paris, :rome, :tokyo, :budapest])
#MapSet<[:budapest, :paris, :rome, :tokyo]>
iex> Permutation.permute(mapset)
{:ok, #MapSet<[#MapSet<[:budapest, :paris, :rome, :tokyo]>]>}

Lists are used when the members ARE ordered:

iex> Permutation.permute([:a, :b, :c])
{:ok,
#MapSet<[
  [:a, :b, :c],
  [:a, :c, :b],
  [:b, :a, :c],
  [:b, :c, :a],
  [:c, :a, :b],
  [:c, :b, :a]
]>}

Link to this section Summary

Functions

Find all possible combinations of the collection's members, returned as a MapSet.

Link to this section Types

Link to this section Functions

Link to this function

permute(enumerable, opts \\ [])

View Source

Find all possible combinations of the collection's members, returned as a MapSet.

options

Options

  • :cardinality the maximum size of the resulting subsets
Link to this function

permute!(enumerable, opts \\ [])

View Source

As with Permutation.permute/2 but raises on error.