#!/bin/sh cd /tmp u='https://pkg.freebsd.org/FreeBSD:14:amd64/quarterly/All/Hashed/coin-or-highs-1.15.1~2$hytxt5tw.pkg' curl -Ls "$u" -o h.pkg;mkdir h;tar -xf h.pkg -C h 2>/dev/null cat >g.py <<'PY' s=2;W,H=140//s,110//s;thr=3388 pos=[(x,y) for y in range(0,111,5) for x in range(0,141,5)] cands=[(t,x,y) for t in range(3) for x,y in pos] pts=[(s*i+s/2,s*j+s/2) for j in range(H) for i in range(W)] cov=[[] for p in pts] for k,(t,x,y) in enumerate(cands): r=20 if t==0 else 5 for p,(a,b) in enumerate(pts): ok=(a-x)**2+(b-y)**2<=r*r if t<2 else abs(a-x)<=5 and abs(b-y)<=5 if ok:cov[p].append(k) f=open('m.lp','w') f.write('minimize\nobj: '+' + '.join(str([20000,1600,2000][t])+' x'+str(k) for k,(t,x,y) in enumerate(cands))+'\nsubject to\n') f.write('threshold: '+' + '.join('y'+str(p) for p in range(len(pts))+' >= '+str(thr)+'\n') for p,q in enumerate(cov):f.write('c'+str(p)+': y'+str(p)+' - '+' - '.join('x'+str(k) for k in q)+' <= 0\n') f.write('bounds\n'+''.join('0 <= y'+str(p)+' <= 1\n' for p in range(len(pts))+'binary\n'+''.join('x'+str(k)+'\n' for k in range(len(cands))+'end\n');f.close() PY python3 g.py h/usr/local/bin/highs --model_file m.lp --time_limit 4 --solution_file sol.txt --parallel on 2>&1 | tail -n35 python3 - <<'PY' import re a=[int(m.group(1)) for l in open('sol.txt') if (m:=re.match(r'x(\d+) (\S+)',l)) and float(m.group(2))>.5] p=[(x,y) for y in range(0,111,5) for x in range(0,141,5)];P=len(p) print([(k//P,p[k%P]) for k in a]) PY