tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 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:])]
|
||||
Loading…
Add table
Add a link
Reference in a new issue