import re,sys EL=re.compile(r"^aivisit claim call=(\d+) idx=(\d+) elem=(\S+) fid=(\d+) nships=(\d+) loc=(\S+) agent=(\S+) ships=\[([^\]]*)\]") def nd(v): return all(v[i]<=v[i+1] for i in range(len(v)-1)) for path,label in zip(sys.argv[1::2],sys.argv[2::2]): seqs={} for ln in open(path): m=EL.match(ln) if m: seqs.setdefault(int(m.group(1)),[]).append((int(m.group(3),16),int(m.group(6),16),int(m.group(4)),[int(x) for x in m.group(8).split()])) print(f"### {label} ({path})") t=l=e=f=0 for c,rows in sorted(seqs.items()): if len(rows)<2: continue t+=1 L=nd([r[1] for r in rows]); E=nd([r[0] for r in rows]); F=nd([r[2] for r in rows]) l+=L; e+=E; f+=F print(f" call={c} n={len(rows)} loc_asc={L} elem_asc={E} fid_asc={F}") for r in rows: print(f" elem=0x{r[0]:08x} loc=0x{r[1]:08x} fid={r[2]:5d} ships={r[3][:3]}") print(f" -> claim sequences with >1 element: {t} loc-ordered {l}/{t} elem-ordered {e}/{t} id-ordered {f}/{t}\n")