3个版本 (破坏性更新)
0.3.0 | 2023年7月2日 |
---|---|
0.2.2 | 2023年7月1日 |
0.1.0 | 2023年6月29日 |
#1383 在 算法
在 2 个crate中使用 (通过 derive-quickcheck)
20KB
374 行
广度优先zip
属性测试和验证,确保在严格递增的索引和中返回每个可能值恰好一次。
为什么?
因为当你有多个迭代器,并希望从最小到最大的整体值覆盖每个可能的值时。
例如,对于三个实例的 0..3
,你会得到这个
0 0 0 # sum = 0
0 0 1 # sum = 1
0 1 0
1 0 0
0 0 2 # sum = 2
0 1 1
0 2 0
1 0 1
1 1 0
2 0 0
0 1 2 # sum = 3
0 2 1
1 0 2
1 1 1
1 2 0
2 0 1
2 1 0
0 2 2 # sum = 4
1 1 2
1 2 1
2 0 2
2 1 1
2 2 0
1 2 2 # sum = 5
2 1 2
2 2 1
2 2 2 # sum = 6
输入可以是任何非空迭代器,甚至可以结合不同的大小。
lib.rs
:
为可重复迭代器提供广度优先穷举zip
。行为符合以下伪代码规范
- 将计数器
i
初始化为零。 - 当被提示时,从每个迭代器中拉取第一个元素。
- 如果任何迭代器为空,则返回
None
。
- 如果任何迭代器为空,则返回
- 当再次被提示时,仅前进最后一个迭代器。
- 继续这样做,直到最后一个迭代器终止或达到其
i
次元素。- 当这样做时,将其重置并从第二个到最后一个迭代器中拉取下一个元素。
- 重复此过程,直到耗尽第一个迭代器。
- 当你这样做时,增加
i
并重复。
- 当你这样做时,增加
- 一旦
i
超过最长迭代器的长度,我们就可以结束:返回None
。
依赖项
~295–740KB
~18K SLoC