![]() |
1
21
我已经写了一个解决方案,它不需要您在内存中填充大量的集合。不幸的是,所需的代码有数百行长。你可能要等到它出现在关岛项目中( http://guava-libraries.googlecode.com ,我希望在今年年底。对不起的。:( 注意,如果笛卡尔公式生成的集合数是编译时已知的固定数,那么您可能不需要这样的实用程序——您可以只使用嵌套的for循环数。 编辑: 代码现在被释放。 我想你会很高兴的。它只在您请求的时候创建单独的列表;不会用它们的所有MXNXPXQ填充内存。 如果你想检查源头, here at line 727 . 享受! |
![]() |
2
2
使用谷歌番石榴19和爪哇8非常简单: 假设您拥有要关联的所有数组的列表…
生成不可变列表的方法如下:
输出如下:
|
![]() |
3
1
下面的答案使用迭代而不是递归。它使用相同的
这是一个单独的答案,因为IMHO都是有效的、不同的方法。 这是新的主要课程:
|
![]() |
4
1
这是我写的一个迭代的、懒惰的实现。这个界面与Google的sets.cartesiaproduct非常相似,但它有点灵活:它处理的是iterables而不是sets。此代码及其单元测试位于 https://gist.github.com/1911614 .
|
![]() |
5
1
基于索引的解决方案 使用索引是一种简单的替代方法,它速度快、内存效率高,可以处理任意数量的集合。实现iterable允许在for-each循环中轻松使用。有关用法示例,请参见main方法。
} |
![]() |
6
0
我相信这是正确的。它不是在寻求效率,而是通过递归和抽象实现一种干净的风格。
关键的抽象是引入一个简单的
通过这个类,我们可以编写这样的类:
} 我有一个很好的例子来说明这项工作,但是为了简洁起见省略了它。 |
![]() |
7
0
您可能对另一个关于笛卡尔产品的问题感兴趣(编辑:删除以保存超链接,搜索标签笛卡尔产品)。这个答案有一个很好的递归解决方案,我很难改进。您是否特别需要迭代解决方案而不是递归解决方案? 编辑: 在研究了Perl中堆栈溢出的另一个迭代解决方案之后, a clean explanation ,这里是另一个解决方案:
|
![]() |
8
0
这里是一个使用函数生成适当输出类型的惰性迭代器方法。
|
![]() |
9
0
我为字符串表编写了一个递归笛卡尔积算法。您可以将其修改为具有集合ISTEAD。下面是算法。它也在我的 article
|
![]() |
cms · 如何在PDL中执行笛卡尔乘积 8 年前 |
![]() |
David Brossard · 如何在Java中求字符串矩阵的乘积? 8 年前 |
![]() |
badner · itertools产品占用太多内存 8 年前 |
![]() |
Jammer · 根据+/-笛卡尔输入值计算屏幕坐标 9 年前 |
![]() |
voho · Java 8中的流的笛卡尔积作为流(仅使用流) 10 年前 |
![]() |
galois · Python的itertools.product()的效率 10 年前 |
|
Ashton Baker · 骰子滚动笛卡尔积的嵌套计算 10 年前 |
![]() |
danielvdende · 维度不可知(通用)笛卡尔乘积[重复] 11 年前 |
![]() |
Luis Mendo · 生成包含从n个向量中提取的元素的所有组合的矩阵 11 年前 |