#!/usr/bin/env python3
"""Compute Collatz total stopping times (delay) and delay records for n=1..N."""
import json
from pathlib import Path

N = 10_000_000

def main():
    delays = [0] * (N + 1)
    records = []
    max_d = -1
    for n in range(1, N + 1):
        x = n
        steps = 0
        while x != 1:
            if x < n and delays[x]:
                steps += delays[x]
                break
            if x % 2 == 0:
                x //= 2
            else:
                x = 3 * x + 1
            steps += 1
        delays[n] = steps
        if steps > max_d:
            max_d = steps
            records.append({"n": n, "delay": steps})
    out = Path("results")
    out.mkdir(exist_ok=True)
    payload = {
        "N": N,
        "n_records": len(records),
        "records": records,
        "max_delay": max_d,
        "max_delay_n": records[-1]["n"],
    }
    (out / "R1.json").write_text(json.dumps(payload, separators=(",", ":"), ensure_ascii=True) + "\n")
    with (out / "delay_records.csv").open("w") as f:
        f.write("n,delay\n")
        for r in records:
            f.write(f"{r['n']},{r['delay']}\n")

if __name__ == "__main__":
    main()
