first commit
This commit is contained in:
37
perl/Examples/Chap5/powerset-4
Normal file
37
perl/Examples/Chap5/powerset-4
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
|
||||
###
|
||||
### powerset_recurse4
|
||||
###
|
||||
|
||||
## Chapter 5 section 4.1.1
|
||||
|
||||
sub powerset_recurse ($) {
|
||||
my ( $set ) = @_;
|
||||
my $null = { };
|
||||
my $powerset = { $null, $null };
|
||||
|
||||
while (my ($key, $value) = each %$set) {
|
||||
|
||||
my @newitems;
|
||||
|
||||
while (my ($powerkey, $powervalue) = each %$powerset) {
|
||||
my %subset = ( );
|
||||
|
||||
# Copy the old set to the subset.
|
||||
@subset{keys %{ $powerset->{$powerkey} } } =
|
||||
values %{ $powerset->{$powervalue} };
|
||||
|
||||
# Add the new member to the subset.
|
||||
$subset{$key} = $value;
|
||||
|
||||
# Prepare to add the new subset to the powerset.
|
||||
push @newitems, \%subset;
|
||||
}
|
||||
|
||||
$powerset->{ $_ } = $_ for @newitems;
|
||||
|
||||
}
|
||||
|
||||
return $powerset;
|
||||
}
|
||||
Reference in New Issue
Block a user