"""Independent admissibility check of a k-tuple file (one integer per line, or comma/space separated). A tuple h_1<... k this is automatic). Reports k, diameter, and the verdict.""" import sys, re, json import numpy as np def primes_upto(n): s = np.ones(n + 1, bool); s[:2] = False for p in range(2, int(n ** 0.5) + 1): if s[p]: s[p * p::p] = False return np.nonzero(s)[0] def check(t): t = np.unique(np.asarray(t, dtype=np.int64)) k = len(t) for p in primes_upto(max(k, 2)): r = np.bincount((t % p).astype(np.int64), minlength=int(p)) if r.min() > 0: return dict(k=k, diameter=int(t[-1] - t[0]), admissible=False, bad_prime=int(p)) return dict(k=k, diameter=int(t[-1] - t[0]), admissible=True) if __name__ == "__main__": for f in sys.argv[1:]: if f.endswith(".npy"): t = np.load(f) else: t = [int(x) for x in re.findall(r"-?\d+", open(f).read())] out = check(t); out["file"] = f.split("/")[-1] print(json.dumps(out), flush=True)