Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
20
Task/Power-set/Python/power-set-1.py
Normal file
20
Task/Power-set/Python/power-set-1.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
def list_powerset(lst):
|
||||
# the power set of the empty set has one element, the empty set
|
||||
result = [[]]
|
||||
for x in lst:
|
||||
# for every additional element in our set
|
||||
# the power set consists of the subsets that don't
|
||||
# contain this element (just take the previous power set)
|
||||
# plus the subsets that do contain the element (use list
|
||||
# comprehension to add [x] onto everything in the
|
||||
# previous power set)
|
||||
result.extend([subset + [x] for subset in result])
|
||||
return result
|
||||
|
||||
# the above function in one statement
|
||||
def list_powerset2(lst):
|
||||
return reduce(lambda result, x: result + [subset + [x] for subset in result],
|
||||
lst, [[]])
|
||||
|
||||
def powerset(s):
|
||||
return frozenset(map(frozenset, list_powerset(list(s))))
|
||||
9
Task/Power-set/Python/power-set-2.py
Normal file
9
Task/Power-set/Python/power-set-2.py
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
def powersetlist(s):
|
||||
r = [[]]
|
||||
for e in s:
|
||||
print "r: %-55r e: %r" % (r,e)
|
||||
r += [x+[e] for x in r]
|
||||
return r
|
||||
|
||||
s= [0,1,2,3]
|
||||
print "\npowersetlist(%r) =\n %r" % (s, powersetlist(s))
|
||||
25
Task/Power-set/Python/power-set-3.py
Normal file
25
Task/Power-set/Python/power-set-3.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
def powersequence(val):
|
||||
''' Generate a 'powerset' for sequence types that are indexable by integers.
|
||||
Uses a binary count to enumerate the members and returns a list
|
||||
|
||||
Examples:
|
||||
>>> powersequence('STR') # String
|
||||
['', 'S', 'T', 'ST', 'R', 'SR', 'TR', 'STR']
|
||||
>>> powersequence([0,1,2]) # List
|
||||
[[], [0], [1], [0, 1], [2], [0, 2], [1, 2], [0, 1, 2]]
|
||||
>>> powersequence((3,4,5)) # Tuple
|
||||
[(), (3,), (4,), (3, 4), (5,), (3, 5), (4, 5), (3, 4, 5)]
|
||||
>>>
|
||||
'''
|
||||
vtype = type(val); vlen = len(val); vrange = range(vlen)
|
||||
return [ reduce( lambda x,y: x+y, (val[i:i+1] for i in vrange if 2**i & n), vtype())
|
||||
for n in range(2**vlen) ]
|
||||
|
||||
def powerset(s):
|
||||
''' Generate the powerset of s
|
||||
|
||||
Example:
|
||||
>>> powerset(set([6,7,8]))
|
||||
set([frozenset([7]), frozenset([8, 6, 7]), frozenset([6]), frozenset([6, 7]), frozenset([]), frozenset([8]), frozenset([8, 7]), frozenset([8, 6])])
|
||||
'''
|
||||
return set( frozenset(x) for x in powersequence(list(s)) )
|
||||
3
Task/Power-set/Python/power-set-4.py
Normal file
3
Task/Power-set/Python/power-set-4.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
def p(l):
|
||||
if not l: return [[]]
|
||||
return p(l[1:]) + [[l[0]] + x for x in p(l[1:])]
|
||||
26
Task/Power-set/Python/power-set-5.py
Normal file
26
Task/Power-set/Python/power-set-5.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
>>> from pprint import pprint as pp
|
||||
>>> from itertools import chain, combinations
|
||||
>>>
|
||||
>>> def powerset(iterable):
|
||||
"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
|
||||
s = list(iterable)
|
||||
return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
|
||||
|
||||
>>> pp(set(powerset({1,2,3,4})))
|
||||
{(),
|
||||
(1,),
|
||||
(1, 2),
|
||||
(1, 2, 3),
|
||||
(1, 2, 3, 4),
|
||||
(1, 2, 4),
|
||||
(1, 3),
|
||||
(1, 3, 4),
|
||||
(1, 4),
|
||||
(2,),
|
||||
(2, 3),
|
||||
(2, 3, 4),
|
||||
(2, 4),
|
||||
(3,),
|
||||
(3, 4),
|
||||
(4,)}
|
||||
>>>
|
||||
Loading…
Add table
Add a link
Reference in a new issue