June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -1,9 +1,6 @@
|
|||
(defn powerset [coll]
|
||||
(reduce (fn [a x]
|
||||
(->> a
|
||||
(map #(set (concat #{x} %)))
|
||||
(concat a)
|
||||
set))
|
||||
(into a (map #(conj % x)) a))
|
||||
#{#{}} coll))
|
||||
|
||||
(powerset #{1 2 3})
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// types needed to implement general purpose sets are element and set
|
||||
|
|
@ -85,7 +85,7 @@ func (s set) String() string {
|
|||
if len(s) == 0 {
|
||||
return "∅"
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
var buf strings.Builder
|
||||
buf.WriteRune('{')
|
||||
for i, e := range s {
|
||||
if i > 0 {
|
||||
|
|
@ -104,7 +104,7 @@ func (s set) powerSet() set {
|
|||
var u set
|
||||
for _, er := range r {
|
||||
er := er.(set)
|
||||
u = append(u, append(er[:len(er):len(er)], es))
|
||||
u = append(u, append(er[:len(er):len(er)], es))
|
||||
}
|
||||
r = append(r, u...)
|
||||
}
|
||||
|
|
|
|||
2
Task/Power-set/PARI-GP/power-set-2.pari
Normal file
2
Task/Power-set/PARI-GP/power-set-2.pari
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
S=["a","b","c"]
|
||||
forsubset(#S,s,print1(vecextract(S,s)" "))
|
||||
|
|
@ -1,21 +1,8 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
sub powerset(&@) {
|
||||
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 != @_;
|
||||
}
|
||||
my @set = (1, 2, 3);
|
||||
my @powerset = powerset(@set);
|
||||
|
||||
sub set_to_string {
|
||||
"{" . join(", ", map { ref $_ ? set_to_string(@$_) : $_ } @_) . "}"
|
||||
}
|
||||
|
||||
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";
|
||||
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(&@) {
|
||||
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";
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
use ntheory "vecextract";
|
||||
my @S=("a","b","c");
|
||||
my @PS = map { "[".join(" ",vecextract(\@S,$_))."]" } 0..2**scalar(@S)-1;
|
||||
say join(" ",@PS);
|
||||
use ntheory "forcomb";
|
||||
my @S = qw/a b c/;
|
||||
forcomb { print "[@S[@_]] " } scalar(@S);
|
||||
print "\n";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
use ntheory "forcomb";
|
||||
my @S=("a","b","c");
|
||||
my @S = qw/a b c/;
|
||||
for $k (0..@S) {
|
||||
# Iterate over each $#S+1,$k combination.
|
||||
forcomb { print "[@S[@_]] " } @S,$k;
|
||||
|
|
|
|||
|
|
@ -1,14 +1,4 @@
|
|||
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";
|
||||
use ntheory "vecextract";
|
||||
my @S = qw/a b c/;
|
||||
my @PS = map { "[".join(" ",vecextract(\@S,$_))."]" } 0..2**scalar(@S)-1;
|
||||
say join(" ",@PS);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,14 @@
|
|||
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...
|
||||
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";
|
||||
|
|
|
|||
|
|
@ -1,11 +1,6 @@
|
|||
use List::Util qw(reduce);
|
||||
|
||||
sub powerset {
|
||||
@{( reduce { [@$a, map { Set->new($_->elements, $b) } @$a ] }
|
||||
[Set->new()], shift->elements )};
|
||||
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...
|
||||
}
|
||||
|
||||
my $set = Set->new(1, 2, 3);
|
||||
my @subsets = powerset($set);
|
||||
|
||||
print $_->as_string, "\n" for @subsets;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,11 @@
|
|||
use List::Util qw(reduce);
|
||||
|
||||
sub powerset {
|
||||
@_ ? map { $_, [$_[0], @$_] } powerset(@_[1..$#_]) : [];
|
||||
@{( 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;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
use List::Util qw(reduce);
|
||||
|
||||
sub powerset {
|
||||
@{( reduce { [@$a, map([@$_, $b], @$a)] } [[]], @_ )}
|
||||
@_ ? map { $_, [$_[0], @$_] } powerset(@_[1..$#_]) : [];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
my @set = (1, 2, 3);
|
||||
my @powerset = powerset(@set);
|
||||
use List::Util qw(reduce);
|
||||
|
||||
sub set_to_string {
|
||||
"{" . join(", ", map { ref $_ ? set_to_string(@$_) : $_ } @_) . "}"
|
||||
sub powerset {
|
||||
@{( reduce { [@$a, map([@$_, $b], @$a)] } [[]], @_ )}
|
||||
}
|
||||
|
||||
print set_to_string(@powerset), "\n";
|
||||
|
|
|
|||
23
Task/Power-set/Ring/power-set.ring
Normal file
23
Task/Power-set/Ring/power-set.ring
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Project : Power set
|
||||
# Date : 2018/01/13
|
||||
# Author : Gal Zsolt (~ CalmoSoft ~)
|
||||
# Email : <calmosoft@gmail.com>
|
||||
|
||||
list = ["1", "2", "3", "4"]
|
||||
see powerset(list)
|
||||
|
||||
func powerset(list)
|
||||
s = "{"
|
||||
for i = 1 to (2 << len(list)) - 1 step 2
|
||||
s = s + "{"
|
||||
for j = 1 to len(list)
|
||||
if i & (1 << j)
|
||||
s = s + list[j] + ","
|
||||
ok
|
||||
next
|
||||
if right(s,1) = ","
|
||||
s = left(s,len(s)-1)
|
||||
ok
|
||||
s = s + "},"
|
||||
next
|
||||
return left(s,len(s)-1) + "}"
|
||||
15
Task/Power-set/Swift/power-set-1.swift
Normal file
15
Task/Power-set/Swift/power-set-1.swift
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
func powersetFrom<T>(_ elements: Set<T>) -> Set<Set<T>> {
|
||||
guard elements.count > 0 else {
|
||||
return [[]]
|
||||
}
|
||||
var powerset: Set<Set<T>> = [[]]
|
||||
for element in elements {
|
||||
for subset in powerset {
|
||||
powerset.insert(subset.union([element]))
|
||||
}
|
||||
}
|
||||
return powerset
|
||||
}
|
||||
|
||||
// Example:
|
||||
powersetFrom([1, 2, 4])
|
||||
2
Task/Power-set/Swift/power-set-2.swift
Normal file
2
Task/Power-set/Swift/power-set-2.swift
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
//Example:
|
||||
powersetFrom(["a", "b", "d"])
|
||||
Loading…
Add table
Add a link
Reference in a new issue