Trotter
Welcome to trotter, a set of Python classes for representing sequences of structures of item selections commonly encountered in combinatorics.
Classes have been defined according to whether order is important, items may be repeated, and length is specified:
| Class | Order Important | Repetition Allowed | Specified Length |
|---|---|---|---|
Amalgams |
Yes | Yes | Yes |
Permutations |
Yes | No | Yes |
Compounds |
Yes | No | No |
Compositions |
No | Yes | Yes |
Combinations |
No | No | Yes |
Subsets |
No | No | No |
Instances of these classes are indexable pseudo-lists containing all possible selections of items. Since the number of possible arrangements can grow very quickly with the number of items available (and the number of items taken at a time, where applicable), instances do not actually store all arrangements but are rather containers of mappings between integers and arrangements. This makes it possible to create instances that "contain" very large numbers of arrangements.
Installation
pip install trotter
Example: combinations of words
from trotter import Combinations
items = ["the", "parrot", "is", "not", "pining"]
combos = Combinations(3, items)
print(repr(combos))
Combinations(3, ['the', 'parrot', 'is', 'not', 'pining'])
print(str(combos))
A pseudo-list containing 10 3-combinations of ['the', 'parrot', 'is', 'not', 'pining'].
print(len(combos))
10
for combo in combos:
print(" ".join(combo))
the parrot is
the parrot not
the parrot pining
the is not
the is pining
the not pining
parrot is not
parrot is pining
parrot not pining
is not pining
print(combos.index("the parrot pining".split()))
2
print(combos[2])
['the', 'parrot', 'pining']
Example: subsets of characters in a string
The items can be presented as a list of objects or a string, which is interpreted as a list of characters. Here's an example where we use a string.
for i, subset in enumerate(Subsets("spam")):
print(f"[{i}] '{subset}'")
[0] ''
[1] 's'
[2] 'p'
[3] 'sp'
[4] 'a'
[5] 'sa'
[6] 'pa'
[7] 'spa'
[8] 'm'
[9] 'sm'
[10] 'pm'
[11] 'spm'
[12] 'am'
[13] 'sam'
[14] 'pam'
[15] 'spam'
Example: many permutations!
from trotter import Permutations
letters = "abcdefghijklmnopqrstuvwxyz"
permutations = Permutations(10, letters)
print(permutations)
A pseudo-list containing 19275223968000 10-permutations of 'abcdefghijklmnopqrstuvwxyz'.
That's almost twenty trillion! Luckily, we're only dealing with a pseudo-list, and those permutations are not actually stored!
Notice that the word algorithms is a ten-letter permutation of the letters of the alphabet. At what position in the pseudo-list is this word?
print(permutations.index("algorithms"))
6831894769563
Luckily, we were able to find it without a brute-force search! Let's check that result...
print(permutations[6831894769563])
algorithms
Metadata
Release files for trotter 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| trotter-1.1.0.tar.gz | 9.2 kB | Without provenance | Details for trotter-1.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| trotter-1.1.0-py3-none-any.whl | Python 3 | none | any | Details for trotter-1.1.0-py3-none-any.whl |
Total release size: 20.3 kB
Release files / trotter-1.1.0.tar.gz
| Download URL | trotter-1.1.0.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83e5a0b36d63bd82392faf37a5064534b1d65af6f941d1b1c4dde8062d31508d
|
|
BLAKE2b-256 checksum How to use checksums |
3999efb2d2ed4c5019e131e8cfdad7c5019bb3fd9407cd8ce9bbf9c6938d194c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.10.0
|
Release files / trotter-1.1.0-py3-none-any.whl
| Download URL | trotter-1.1.0-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
146670fdae65bdab22608add0bbca0185b38379f4088901cfad0213d83db4043
|
|
BLAKE2b-256 checksum How to use checksums |
3b6c13b67fd2bdb5501d6fbe59ad896fd5f933d5d7f6e104d1b5750df0ff85c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.10.0
|
Security for trotter 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.