Sync
This commit is contained in:
parent
6f050a029e
commit
776bba907c
3887 changed files with 59894 additions and 7280 deletions
|
|
@ -1,35 +1,4 @@
|
|||
def consolidate(sets):
|
||||
'''
|
||||
>>> # Define some variables
|
||||
>>> A,B,C,D,E,F,G,H,I,J,K = 'A,B,C,D,E,F,G,H,I,J,K'.split(',')
|
||||
>>> # Consolidate some lists of sets
|
||||
>>> consolidate([{A,B}, {C,D}])
|
||||
[{'A', 'B'}, {'C', 'D'}]
|
||||
>>> consolidate([{A,B}, {B,D}])
|
||||
[{'A', 'B', 'D'}]
|
||||
>>> consolidate([{A,B}, {C,D}, {D,B}])
|
||||
[{'A', 'C', 'B', 'D'}]
|
||||
>>> consolidate([{H,I,K}, {A,B}, {C,D}, {D,B}, {F,G,H}])
|
||||
[{'A', 'C', 'B', 'D'}, {'G', 'F', 'I', 'H', 'K'}]
|
||||
>>> consolidate([{A,H}, {H,I,K}, {A,B}, {C,D}, {D,B}, {F,G,H}])
|
||||
[{'A', 'C', 'B', 'D', 'G', 'F', 'I', 'H', 'K'}]
|
||||
>>> consolidate([{H,I,K}, {A,B}, {C,D}, {D,B}, {F,G,H}, {A,H}])
|
||||
[{'A', 'C', 'B', 'D', 'G', 'F', 'I', 'H', 'K'}]
|
||||
>>> # Confirm order-independence
|
||||
>>> from copy import deepcopy
|
||||
>>> import itertools
|
||||
>>> sets = [{H,I,K}, {A,B}, {C,D}, {D,B}, {F,G,H}, {A,H}]
|
||||
>>> answer = consolidate(deepcopy(sets))
|
||||
>>> for perm in itertools.permutations(sets):
|
||||
assert consolidate(deepcopy(perm)) == answer
|
||||
|
||||
|
||||
>>> answer
|
||||
[{'A', 'C', 'B', 'D', 'G', 'F', 'I', 'H', 'K'}]
|
||||
>>> len(list(itertools.permutations(sets)))
|
||||
720
|
||||
>>>
|
||||
'''
|
||||
setlist = [s for s in sets if s]
|
||||
for i, s1 in enumerate(setlist):
|
||||
if s1:
|
||||
|
|
|
|||
34
Task/Set-consolidation/Python/set-consolidation-3.py
Normal file
34
Task/Set-consolidation/Python/set-consolidation-3.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
def _test(consolidate=consolidate):
|
||||
|
||||
def freze(list_of_sets):
|
||||
'return a set of frozensets from the list of sets to allow comparison'
|
||||
return set(frozenset(s) for s in list_of_sets)
|
||||
|
||||
# Define some variables
|
||||
A,B,C,D,E,F,G,H,I,J,K = 'A,B,C,D,E,F,G,H,I,J,K'.split(',')
|
||||
# Consolidate some lists of sets
|
||||
assert (freze(consolidate([{A,B}, {C,D}])) == freze([{'A', 'B'}, {'C', 'D'}]))
|
||||
assert (freze(consolidate([{A,B}, {B,D}])) == freze([{'A', 'B', 'D'}]))
|
||||
assert (freze(consolidate([{A,B}, {C,D}, {D,B}])) == freze([{'A', 'C', 'B', 'D'}]))
|
||||
assert (freze(consolidate([{H,I,K}, {A,B}, {C,D}, {D,B}, {F,G,H}])) ==
|
||||
freze([{'A', 'C', 'B', 'D'}, {'G', 'F', 'I', 'H', 'K'}]))
|
||||
assert (freze(consolidate([{A,H}, {H,I,K}, {A,B}, {C,D}, {D,B}, {F,G,H}])) ==
|
||||
freze([{'A', 'C', 'B', 'D', 'G', 'F', 'I', 'H', 'K'}]))
|
||||
assert (freze(consolidate([{H,I,K}, {A,B}, {C,D}, {D,B}, {F,G,H}, {A,H}])) ==
|
||||
freze([{'A', 'C', 'B', 'D', 'G', 'F', 'I', 'H', 'K'}]))
|
||||
# Confirm order-independence
|
||||
from copy import deepcopy
|
||||
import itertools
|
||||
sets = [{H,I,K}, {A,B}, {C,D}, {D,B}, {F,G,H}, {A,H}]
|
||||
answer = consolidate(deepcopy(sets))
|
||||
for perm in itertools.permutations(sets):
|
||||
assert consolidate(deepcopy(perm)) == answer
|
||||
|
||||
assert (answer == [{'A', 'C', 'B', 'D', 'G', 'F', 'I', 'H', 'K'}])
|
||||
assert (len(list(itertools.permutations(sets))) == 720)
|
||||
|
||||
print('_test(%s) complete' % consolidate.__name__)
|
||||
|
||||
if __name__ == '__main__':
|
||||
_test(consolidate)
|
||||
_test(conso)
|
||||
Loading…
Add table
Add a link
Reference in a new issue