tests = [
[
[
frozenset([5, 8, (1, 2), "rvbc"]),
frozenset(["fnyh", "esa", 1]),
frozenset([("cev", "cdv", 0), 18]),
],
False,
],
[
[
frozenset([5, 8, (1, 2), "rvbc"]),
frozenset(["fnyh", "esa", 6]),
frozenset([("cev", "cdv", 0), 18]),
],
True,
],
[[], True],
[
[
frozenset([5, 8, (1, 2), "rvbc"]),
frozenset([frozenset(["fnyh", 0]), "esa", 6]),
frozenset([("cev", "cdv", 0), 18]),
],
False,
],
[
[
frozenset(
[5, 8, (1, (2, 6, (9, 100, 107), 890, (1, (5, 6))), (3, 4, 5)), "rvbc"]
),
frozenset(["fnyh", "esa", 6]),
frozenset([("cev", "cdv", 20), 18]),
],
False
],
]
from collections import defaultdict
def get_uniqs(xs):
uniqs=defaultdict(int)
uniqs[xs] += 1
if isinstance(xs, (list, tuple, frozenset)):
for x in xs:
_u = get_uniqs(x)
for e, v in _u.items():
uniqs[e] += v
return uniqs
def solve(_s):
uniqs = defaultdict(int)
for x in _s:
r = get_uniqs(x)
for k, v in r.items():
uniqs[k] += v
return uniqs
def solve(sets):
uniqs = defaultdict(int)
for s in sets:
u = get_uniqs(s)
if any(v > 1 for k, v in u.items()) or any(k in uniqs for k in u):
return False
uniqs |= u
return True
for xs, res in tests:
print(solve(xs), res)
To embed this program on your website, copy the following code and paste it into your website's HTML: