#!/bin/sh cd /tmp curl -L -sS https://pkg.freebsd.org/FreeBSD:14:amd64/quarterly/All/lp_solve-5.5.2.5_1.pkg -o l.pkg mkdir p;tar -xf l.pkg -C p 2>/dev/null cat >m.py <<'PY' import math W,H=140,110 pos=[(x,y) for y in range(0,H+1,5) for x in range(0,W+1,5)] cands=[(t,x,y) for t in range(3) for x,y in pos] f=open('m.lp','w') f.write('min: '+' + '.join(f'{[20000,1600,2000][t]} x{k}' for k,(t,x,y) in enumerate(cands))+';\n') f.write('threshold: '+' + '.join(f'y{p}' for p in range(W*H))+' >= 13552;\n') for j in range(H): for i in range(W): a,b=i+.5,j+.5;q=[] for k,(t,x,y) in enumerate(cands): ok=(a-x)**2+(b-y)**2<=(400 if t==0 else 25) if t<2 else abs(a-x)<=5 and abs(b-y)<=5 if ok:q.append(f'x{k}') p=j*W+i;f.write(f'c{p}: y{p} - '+' - '.join(q)+' <= 0;\n') f.write('bin '+','.join([f'x{k}' for k in range(len(cands))]+[f'y{p}' for p in range(W*H)])+';\n') f.close() print(len(cands),W*H) PY python3 m.py ls -lh m.lp p/usr/local/bin/lp_solve -timeout 4 m.lp | head -n80