[perl-python] exercise: partition a list by equivalence
Paul McGuire
ptmcg at austin.rr.com
Wed Feb 23 11:47:17 EST 2005
Please consider my submission also (Python 2.3-compatible).
-- Paul McGuire
. import sets
.
. input = [[1, 2], [3, 4], [2, 3], [4, 5]]
. input = [[1, 2], [3, 4], [4, 5]]
. input = [[1, 2],[2,1], [3, 4], [4, 5],[2,2],[2,3],[6,6]]
.
. def merge(pairings):
. ret = []
. for a,b in pairings:
. s1 = None
. s2 = None
. for s in ret:
. if a in s or b in s:
. if s1 is None:
. s1 = s
. else:
. s2 = s
. break
. else:
. for s in ret:
. if a in s:
. s.add(b)
. break
. elif b in s:
. s.add(a)
. break
. else:
. ret.append(sets.Set([a,b]))
. continue
. ret.remove(s1)
. ret.remove(s2)
. ret.append(s1.union(s2))
.
. return [list(s) for s in ret]
.
. print merge(input)
More information about the Python-list
mailing list