gpt4 book ai didi

arrays - 查找一组数组的所有子集 (perl)

转载 作者:行者123 更新时间:2023-12-04 16:00:04 25 4
gpt4 key购买 nike

我有一堆数组@a1, @a2, ... @ak(我不知道有多少)。我想创建一个包含数组幂集并集的数组。即,当且仅当该数组的条目包含在某些 i 的@ai 中时,某些数组才会出现在输出中。输出不应有重复项。

我能想到的唯一方法是创建一个包含每个数组的幂集的数组,然后合并它们。但是,合并时,我必须检查条目是否相等。

还有更好的吗?

类似的,对所有数组求并集,求幂集,然后删除不应该在其中的东西是行不通的,因为数组的并集太大了。

编辑:例如,假设输入在(1,2), (2, 3, 4),那么输出应该是(), (1), (2), (3), (4), (1,2), (2,3), (3,4), (2,4), (2,3,4) .任何顺序都是可以接受的。

最佳答案

检查 https://metacpan.org/pod/List::PowerSet

use strict;
use warnings;

use List::PowerSet 'powerset_lazy';

my @arr = (
[1,2],
[2,3,4],
);
my %hash;
for my $v (@arr) {
my $ps = powerset_lazy(@$v);
while (my $set = $ps->()) {
my $str = join ",", @$set;
next if $hash{$str}++;
print "($str)\n";
}
}

输出

(1,2)
(2)
(1)
()
(2,3,4)
(3,4)
(2,4)
(4)
(2,3)
(3)

关于arrays - 查找一组数组的所有子集 (perl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50765821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com