3 releases
0.1.5 | Nov 17, 2023 |
---|---|
0.1.4 | Nov 17, 2023 |
0.1.3 | Nov 17, 2023 |
0.1.0 |
|
#492 in Math
31KB
518 lines
Mudder
Generate lexicographically-spaced strings between two strings from pre-defined alphabets.
This package is a rewrite of Mudder.js with a Rust core that is used to generate bindings to Python (via PyO3) and JS/TS (via wasm-pack).
Quickstart
- Rust:
cargo add mudder
- Python:
pip install mudderpy
orpoetry add mudderpy
- JS/TS:
npm install mudderjs
oryarn add mudderjs
API
The API is the same for all three languages. Note that there are a few differences in usage compared to the original:
- The
SymbolTable
constructor takes in astr
/string
instead of achar[]
/string[]
. Each member of the symbol table is assumed to be a character. - When calling
mudder
, optional values for thestart
andend
parameters useNone
orundefined
instead of empty strings. - No method overloads.
Constructor
Create a new SymbolTable
by passing in a string. The characters in the string will be used as the alphabet for the SymbolTable
, with the first character being the "zero" character and, the second being the "one" character, and so on.
In Rust, the new
method takes in a Vector of char
s. The from_str
method takes in a &str
. In Python and JS/TS, the constructor takes in a str
/string
.
use mudder::SymbolTable;
let table = SymbolTable::from_str("abc");
from mudderpy import SymbolTable
table = SymbolTable("abc")
import { SymbolTable } from "mudderjs";
const table = new SymbolTable("abc");
Default SymbolTable
s
For convenience, there are a few default SymbolTable
s that can be used.
SymbolTable::decimal
:0123456789
SymbolTable::alphabetic
:abcdefghijklmnopqrstuvwxyz
SymbolTable::base36
:0123456789abcdefghijklmnopqrstuvwxyz
SymbolTable::base62
:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
SymbolTable::hex
:0123456789abcdef
SymbolTable
methods
A SymbolTable
has the following methods:
-
SymbolTable::mudder(n: usize, start: Option<&str>, end: Option<&str>) -> Result<Vec<String>, &'static str>
: Generaten
strings betweenstart
andend
. Ifstart
isNone
, the first string will be the first string in theSymbolTable
. Ifend
isNone
, the last string will be the last string in theSymbolTable
, repeatedk+6
times wherek=len(start)
. -
SymbolTable::mudder_one(start: Option<&str>, end: Option<&str>) -> Result<String, &'static str>
: Convenience method for callingmudder
withn=1
and returning the first element of the resulting vector.
Note that for Python and JS, the return type is just a list of strings or a single string.
Examples
use mudder::SymbolTable;
let table = SymbolTable::from_str("abc");
// let table = SymbolTable::new(vec!['a', 'b', 'c']);
let strings = table.mudder(5, None, None).unwrap();
assert_eq!(strings, vec!["ab", "ac", "b", "bc", "c"]);
from mudderpy import SymbolTable
table = SymbolTable("abc")
strings = table.mudder(5)
assert strings == ['ab', 'ac', 'b', 'bc', 'c']
import { SymbolTable } from "mudderjs";
const table = new SymbolTable("abc");
const strings = table.mudder(5);
assert(strings == ["ab", "ac", "b", "bc", "c"]);
Dependencies
~480KB
~10K SLoC