1 个不稳定版本
0.1.0 | 2021年6月27日 |
---|
#2112 在 算法 中
14KB
258 行
but-what-about
该库是一个排列工具,仅支持 Heap 的算法。目前它可以排列字符串(通过图形和代码点——尽管,基于代码点的排列目前非常有疑问)和原始数值类型通过它们的位。将来我计划添加对其他排列算法的支持,并实现一些组合算法。目前我不能推荐使用此库进行任何事情,除了娱乐。所以,去享受乐趣吧。
use heap_permute::PermuteIter;
// Print all of the permutations of a string of three characters
fn main() {
const STRING: &'static str = "ABC";
for p in PermuteIter::from(STRING) {
print!("{}, ", p);
}
}
// Prints:
// ABC, BAC, CAB, ACB, BCA, CBA,
lib.rs
:
该库基本上只是一个排列工具。目标是速度和尽可能小的运行时内存影响。因此,该库的目标是尽快计算出并获取一个值的排列。
示例
获取三个字符字符串的所有排列
use heap_permute::PermuteIter;
// Print all of the permutations of a string of three characters
fn main() {
const STRING: &'static str = "ABC";
for p in PermuteIter::from(STRING) {
println!("{}", p);
}
}
// Prints:
// ABC
// BAC
// CAB
// ACB
// BCA
// CBA
现在来做点更有趣的事情,让我们排列 u8 中的位
use heap_permute::PermuteIter;
fn main() {
for p in PermuteIter::from(0b1010_1001 as u8) {
println!("0b{:08b} ({})", p, p);
}
}
// Prints:
// 0b10101001 (169)
// 0b10101010 (170)
// 0b10101010 (170)
// 0b10101001 (169)
// 0b10101100 (172)
// 0b10101100 (172)
// 0b10100101 (165)
// 0b10100110 (166)
// 0b10100011 (163)
// 0b10100011 (163)
// ...
事实上,该库支持所有原始数值 Rust 类型的排列。
依赖项
~140KB