Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
8
Task/Power-set/Perl/power-set-1.pl
Normal file
8
Task/Power-set/Perl/power-set-1.pl
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
use Algorithm::Combinatorics "subsets";
|
||||
my @S = ("a","b","c");
|
||||
my @PS;
|
||||
my $iter = subsets(\@S);
|
||||
while (my $p = $iter->next) {
|
||||
push @PS, "[@$p]"
|
||||
}
|
||||
say join(" ",@PS);
|
||||
8
Task/Power-set/Perl/power-set-10.pl
Normal file
8
Task/Power-set/Perl/power-set-10.pl
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
my @set = (1, 2, 3);
|
||||
my @powerset = powerset(@set);
|
||||
|
||||
sub set_to_string {
|
||||
"{" . join(", ", map { ref $_ ? set_to_string(@$_) : $_ } @_) . "}"
|
||||
}
|
||||
|
||||
print set_to_string(@powerset), "\n";
|
||||
21
Task/Power-set/Perl/power-set-11.pl
Normal file
21
Task/Power-set/Perl/power-set-11.pl
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
sub powerset :prototype(&@) {
|
||||
my $callback = shift;
|
||||
my $bitmask = '';
|
||||
my $bytes = @_/8;
|
||||
{
|
||||
my @indices = grep vec($bitmask, $_, 1), 0..$#_;
|
||||
$callback->( @_[@indices] );
|
||||
++vec($bitmask, $_, 8) and last for 0 .. $bytes;
|
||||
redo if @indices != @_;
|
||||
}
|
||||
}
|
||||
|
||||
print "powerset of empty set:\n";
|
||||
powerset { print "[@_]\n" };
|
||||
print "powerset of set {1,2,3,4}:\n";
|
||||
powerset { print "[@_]\n" } 1..4;
|
||||
my $i = 0;
|
||||
powerset { ++$i } 1..9;
|
||||
print "The powerset of a nine element set contains $i elements.\n";
|
||||
4
Task/Power-set/Perl/power-set-2.pl
Normal file
4
Task/Power-set/Perl/power-set-2.pl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
use ntheory "forcomb";
|
||||
my @S = qw/a b c/;
|
||||
forcomb { print "[@S[@_]] " } scalar(@S);
|
||||
print "\n";
|
||||
7
Task/Power-set/Perl/power-set-3.pl
Normal file
7
Task/Power-set/Perl/power-set-3.pl
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
use ntheory "forcomb";
|
||||
my @S = qw/a b c/;
|
||||
for $k (0..@S) {
|
||||
# Iterate over each $#S+1,$k combination.
|
||||
forcomb { print "[@S[@_]] " } @S,$k;
|
||||
}
|
||||
print "\n";
|
||||
4
Task/Power-set/Perl/power-set-4.pl
Normal file
4
Task/Power-set/Perl/power-set-4.pl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
use ntheory "vecextract";
|
||||
my @S = qw/a b c/;
|
||||
my @PS = map { "[".join(" ",vecextract(\@S,$_))."]" } 0..2**scalar(@S)-1;
|
||||
say join(" ",@PS);
|
||||
14
Task/Power-set/Perl/power-set-5.pl
Normal file
14
Task/Power-set/Perl/power-set-5.pl
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
use Set::Object qw(set);
|
||||
|
||||
sub powerset {
|
||||
my $p = Set::Object->new( set() );
|
||||
foreach my $i (shift->elements) {
|
||||
$p->insert( map { set($_->elements, $i) } $p->elements );
|
||||
}
|
||||
return $p;
|
||||
}
|
||||
|
||||
my $set = set(1, 2, 3);
|
||||
my $powerset = powerset($set);
|
||||
|
||||
print $powerset->as_string, "\n";
|
||||
6
Task/Power-set/Perl/power-set-6.pl
Normal file
6
Task/Power-set/Perl/power-set-6.pl
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
package Set {
|
||||
sub new { bless { map {$_ => undef} @_[1..$#_] }, shift; }
|
||||
sub elements { sort keys %{shift()} }
|
||||
sub as_string { 'Set(' . join(' ', sort keys %{shift()}) . ')' }
|
||||
# ...more set methods could be defined here...
|
||||
}
|
||||
11
Task/Power-set/Perl/power-set-7.pl
Normal file
11
Task/Power-set/Perl/power-set-7.pl
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
use List::Util qw(reduce);
|
||||
|
||||
sub powerset {
|
||||
@{( reduce { [@$a, map { Set->new($_->elements, $b) } @$a ] }
|
||||
[Set->new()], shift->elements )};
|
||||
}
|
||||
|
||||
my $set = Set->new(1, 2, 3);
|
||||
my @subsets = powerset($set);
|
||||
|
||||
print $_->as_string, "\n" for @subsets;
|
||||
3
Task/Power-set/Perl/power-set-8.pl
Normal file
3
Task/Power-set/Perl/power-set-8.pl
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
sub powerset {
|
||||
@_ ? map { $_, [$_[0], @$_] } powerset(@_[1..$#_]) : [];
|
||||
}
|
||||
5
Task/Power-set/Perl/power-set-9.pl
Normal file
5
Task/Power-set/Perl/power-set-9.pl
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
use List::Util qw(reduce);
|
||||
|
||||
sub powerset {
|
||||
@{( reduce { [@$a, map([@$_, $b], @$a)] } [[]], @_ )}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue