Python checkio "Friends"解决方案

来源:互联网 发布:网络电视直播播放器 编辑:程序博客网 时间:2024/06/05 16:14
class Friends:    def __init__(self, connections):        self.connectlist = list(connections)    def add(self, connection):        b = False if connection in self.connectlist else self.connectlist.append(connection)        return b is not False    def remove(self, connection):        b = self.connectlist.remove(connection) if connection in self.connectlist else False        return b is not False    def names(self):        return set(name for pair in self.connectlist for name in pair)    def connected(self, name):        c =set()        [c.update(connect.difference(name)) for connect in self.connectlist if name in connect]        if name in c :c.remove(name)        return  set() if len(c) == 0  else cclass Friends1:    def __init__(self, connections):        self.connections = []        for i in connections:            self.add((i))    def add(self, connection):        if sorted(connection) in self.connections:            return False        else:            self.connections.append(sorted(connection))            return True    def remove(self, connection):        if sorted(connection) in self.connections:            self.connections.pop(self.connections.index(sorted(connection)))            return True        else:            return False    def names(self):        names_set = set()        for i in self.connections:            names_set.add(i[0])            names_set.add(i[1])        return names_set    def connected(self, name):        names = set()        for i in self.names():            if sorted([name, i]) in self.connections: names.add(i)        return namesclass Friends2:    def __init__(self, connections):        self.connections = list(connections)    def add(self, connection):        if connection in self.connections: return False        self.connections.append(connection)        return True    def remove(self, connection):        if not connection in self.connections: return False        self.connections.remove(connection)        return True    def names(self):        return set(name for pair in self.connections for name in pair)    def connected(self, name):        return set(tuple({name} ^ pair)[0] for pair in self.connections if name in pair)