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.
As with Permutation.permute/2 but raises on error.
Link to this section Types
@type t() :: term()
Link to this section Functions
Find all possible combinations of the collection's members, returned as a MapSet.
options
Options
:cardinalitythe maximum size of the resulting subsets
As with Permutation.permute/2 but raises on error.