class Set(list):
def __init__(self, value = []):
list.__init__([])
self.concat(value)
def intersect(self, other):
res = []
for x in self:
if x in other:
res.append(x)
return Set(res)
def union(self, other):
res = Set(self)
res.concat(other)
return res
def concat(self, value):
for x in value:
if not x in self:
self.append(x)
def __and__(self, other): return self.intersect(other)
def __or__(self, other): return self.union(other)
def __repr__(self): return 'Set:' + list.__repr__(self)
if __name__ == '__main__':
x = Set([1,3,5,7])
y = Set([2,1,4,5,6])
print(x, y, len(x))
print(x.intersect(y), y.union(x))
print(x & y, x | y)
x.reverse(); print(x)
Y2xhc3MgU2V0KGxpc3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlID0gW10pOgogICAgICAgIGxpc3QuX19pbml0X18oW10pCiAgICAgICAgc2VsZi5jb25jYXQodmFsdWUpCgogICAgZGVmIGludGVyc2VjdChzZWxmLCBvdGhlcik6CiAgICAgICAgcmVzID0gW10KICAgICAgICBmb3IgeCBpbiBzZWxmOgogICAgICAgICAgICBpZiB4IGluIG90aGVyOgogICAgICAgICAgICAgICAgcmVzLmFwcGVuZCh4KQogICAgICAgIHJldHVybiBTZXQocmVzKQoKICAgIGRlZiB1bmlvbihzZWxmLCBvdGhlcik6CiAgICAgICAgcmVzID0gU2V0KHNlbGYpCiAgICAgICAgcmVzLmNvbmNhdChvdGhlcikKICAgICAgICByZXR1cm4gcmVzCgogICAgZGVmIGNvbmNhdChzZWxmLCB2YWx1ZSk6CiAgICAgICAgZm9yIHggaW4gdmFsdWU6CiAgICAgICAgICAgIGlmIG5vdCB4IGluIHNlbGY6CiAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCh4KQoKICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKTogcmV0dXJuIHNlbGYuaW50ZXJzZWN0KG90aGVyKQogICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6ICByZXR1cm4gc2VsZi51bmlvbihvdGhlcikKICAgIGRlZiBfX3JlcHJfXyhzZWxmKTogICAgICAgcmV0dXJuICdTZXQ6JyArIGxpc3QuX19yZXByX18oc2VsZikKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICB4ID0gU2V0KFsxLDMsNSw3XSkKICAgIHkgPSBTZXQoWzIsMSw0LDUsNl0pCiAgICBwcmludCh4LCB5LCBsZW4oeCkpCiAgICBwcmludCh4LmludGVyc2VjdCh5KSwgeS51bmlvbih4KSkKICAgIHByaW50KHggJiB5LCB4IHwgeSkKICAgIHgucmV2ZXJzZSgpOyBwcmludCh4KQ==
Set:[1, 3, 5, 7] Set:[2, 1, 4, 5, 6] 4
Set:[1, 5] Set:[2, 1, 4, 5, 6, 3, 7]
Set:[1, 5] Set:[1, 3, 5, 7, 2, 4, 6]
Set:[7, 5, 3, 1]