Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork20
Golang library which provide an algorithm to generate all combinations out of a given string array.
License
mxschmitt/golang-combinations
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This package provides a method to generate all ordered combinations out of a given generic array.This essentially creates the powerset of the given array except that the empty set is disregarded.
Take a look at thegodoc for examples.
In general when you have e.g.[]string{"A", "B", "C"} you will get:
[ ["A"], ["B"], ["A","B"], ["C"], ["A","C"], ["B","C"], ["A","B","C"]]
The algorithm iterates over each number from1 to2^length(input), separating it by binary components and utilizes the true/false interpretation of binary 1's and 0's to extract all unique ordered combinations of the input slice.
E.g. a binary number0011 means selecting the first and second index from the slice and ignoring the third and fourth. For input{"A", "B", "C", "D"} this signifies the combination{"A", "B"}.
For input slice{"A", "B", "C", "D"} there are2^4 - 1 = 15 binary combinations, so mapping each bit position to a slice index and selecting the entry for binary1 and discarding for binary0 gives the full subset as:
1=0001=>---A=>{"A"}2=0010=>--B-=>{"B"}3=0011=>--BA=>{"A", "B"}4=0100=>-C--=>{"C"}5=0101=>-C-A=>{"A", "C"}6=0110=>-CB-=>{"B", "C"}7=0111=>-CBA=>{"A", "B", "C"}8=1000=>D---=>{"D"}9=1001=>D--A=>{"A", "D"}10=1010=>D-B-=>{"B", "D"}11=1011=>D-BA=>{"A", "B", "D"}12=1100=>DC--=>{"C", "D"}13=1101=>DC-A=>{"A", "C", "D"}14=1110=>DCB-=>{"B", "C", "D"}15=1111=>DCBA=>{"A", "B", "C", "D"}About
Golang library which provide an algorithm to generate all combinations out of a given string array.
Topics
Resources
License
Code of conduct
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors7
Uh oh!
There was an error while loading.Please reload this page.