1 个不稳定版本
0.1.0 | 2021年2月3日 |
---|
#1545 在 数据结构
33KB
471 行
perm-vec
提供了一种Perm
类型,用于排列数据向量。
[dependencies]
perm-vec = "0.1"
在编程中,处理包含某些东西重新排序索引的数组是一个非常常见的做法。(例如,按某个字段排序数组的索引,或将其更改为匹配某些不同的排序约定)。虽然这通常是以完全随意的的方式进行,但这些索引实际上满足了许多经常被忽视的数学属性,这使得对它们进行推理变得容易得多。
Perm
是一个实现了许多这些属性的类型。
use perm_vec::{Perm, Permute};
fn main() {
// The vec that permutes "abcd" into "bcda".
let perm_shl = Perm::from_vec(vec![1, 2, 3, 0]).unwrap();
assert_eq!(vec![0, 10, 20, 30].permuted_by(&perm_shl), vec![10, 20, 30, 0]);
// The permutation that reverses a vector
let perm_rev = Perm::from_vec((0..4).rev().collect()).unwrap();
assert_eq!(vec![0, 10, 20, 30].permuted_by(&perm_rev), vec![30, 20, 10, 0]);
// Let's compose them!
let perm_comp_1 = perm_shl.then(&perm_rev); // this one shifts, then reverses
let perm_comp_2 = perm_rev.then(&perm_shl); // this one reverses, then shifts
assert_eq!(vec![0, 10, 20, 30].permuted_by(&perm_comp_1), vec![0, 30, 20, 10]);
assert_eq!(vec![0, 10, 20, 30].permuted_by(&perm_comp_2), vec![20, 10, 0, 30]);
}
提供了一些计算方法,例如
- 排列的逆元素。
- 排列的整数幂。
- 直接和。
- 直接积。
许可协议
在Apache License,版本2.0 http://www.apache.org/licenses/LICENSE-2.0 或MIT许可 http://opensource.org/licenses/MIT 下授权,任选其一。此文件不得根据这些条款复制、修改或分发。
更新日志
依赖项
~315–540KB