def ot(x, y): return [i for i in range(x, y + 1)] P = ot(170, 540) Q = ot(370, 830) def f(x, A): return (x in P) <= ((( x in Q) and (x not in A)) <= (x not in P)) from tqdm import tqdm min_A = 100**10 for x1 in tqdm(range(160, 840)): for x2 in range(x1 + 1, 840): A = ot(x1, x2) ok = True for x in range(160, 840): if not f(x, A): ok = False break if ok: min_A = min(min_A, len(A)) print(min_A / 10)#если .9, то округляем с большую сторону.