\nonumber & \qquad\qquad\qquad \vee c_iy>c_jy+c_jh\\
\nonumber & \qquad\qquad\qquad \vee c_iy+c_jh<c_jh\Bigr)\Biggr)\wedge\\
\bigwedge_{i\in PC}\bigwedge_{j\in PC}\Biggl( & i=j\\
- \nonumber & \vee\frac{c_ix+c_iw}{2}-\frac{c_jx+c_jw}{2}>15\\
- \nonumber & \vee\frac{c_jx+c_jw}{2}-\frac{c_ix+c_iw}{2}>15\\
- \nonumber & \vee\frac{c_iy+c_ih}{2}-\frac{c_jy+c_jh}{2}>15\\
- \nonumber & \vee\frac{c_jy+c_jh}{2}-\frac{c_iy+c_ih}{2}>15\Biggr)\wedge\\
- \bigwedge_{i\in RC}\bigvee_{j\in PC}\Biggl(
- \nonumber & !( c_ix-1 >c_jx+c_jw\\
+ \nonumber & \vee c_ix+\frac{c_iw}{2}-c_jx+\frac{c_jw}{2}>15\\
+ \nonumber & \vee c_jx+\frac{c_jw}{2}-c_ix+\frac{c_iw}{2}>15\\
+ \nonumber & \vee c_iy+\frac{c_ih}{2}-c_jy+\frac{c_jh}{2}>15\\
+ \nonumber & \vee c_jy+\frac{c_jh}{2}-c_iy+\frac{c_ih}{2}>15\Biggr)\wedge\\
+ \bigwedge_{i\in RC}\bigvee_{j\in PC}\neg\Biggl(
+ & (c_ix-1>c_jx+c_jw\\
\nonumber & \vee c_ix+1+c_jw<c_jx\\
- \nonumber & \vee c_iy-1 >c_jy+c_jh\\
- \nonumber & \vee c_iy+1+c_jh<c_jh\Biggr)\\
+ \nonumber & \vee c_iy-1>c_jy+c_jh\\
+ \nonumber & \vee c_iy+1+c_jh<c_jh\Biggr)
\end{align}
\subsection{SMT format solution}
')').format(i, j))
# Print the PC distance to eachother
-#for i, _ in enumerate(pc, 1):
-# for j, _ in enumerate(pc, 1):
-# if i != j:
-# print((
-# '\t(or \n'
-# '\t\t(> (- (/ (+ c{0:02d}x c{0:02d}w) 2) '
-# '(/ (+ c{1:02d}x c{1:02d}w) 2)) {2})\n'
-# '\t\t(> (- (/ (+ c{1:02d}x c{1:02d}w) 2) '
-# '(/ (+ c{0:02d}x c{0:02d}w) 2)) {2})\n'
-# '\t\t(> (- (/ (+ c{0:02d}y c{0:02d}h) 2) '
-# '(/ (+ c{1:02d}y c{1:02d}h) 2)) {2})\n'
-# '\t\t(> (- (/ (+ c{1:02d}y c{1:02d}h) 2) '
-# '(/ (+ c{0:02d}y c{0:02d}h) 2)) {2})'
-# ')').format(i, j, pd))
+for i, _ in enumerate(pc, 1):
+ for j, _ in enumerate(pc, 1):
+ if i != j:
+ print((
+ '\t(or \n'
+ '\t\t(> \n'
+ '\t\t\t(- \n'
+ '\t\t\t\t(+ \n'
+ '\t\t\t\t\tc{0:02d}x \n'
+ '\t\t\t\t\t(/ c{0:02d}w 2) \n'
+ '\t\t\t\t) \n'
+ '\t\t\t\t(+ \n'
+ '\t\t\t\t\tc{1:02d}x \n'
+ '\t\t\t\t\t(/ c{1:02d}w 2) \n'
+ '\t\t\t\t) \n'
+ '\t\t\t) \n'
+ '\t\t\t{2} \n'
+ '\t\t)\n'
+ '\t\t(> (- (+ c{1:02d}x (/ c{1:02d}w 2)) '
+ '(+ c{0:02d}x (/ c{0:02d}w 2))) {2})\n'
+ '\t\t(> (- (+ c{0:02d}y (/ c{0:02d}h 2)) '
+ '(+ c{1:02d}y (/ c{1:02d}h 2))) {2})\n'
+ '\t\t(> (- (+ c{1:02d}y (/ c{1:02d}h 2)) '
+ '(+ c{0:02d}y (/ c{0:02d}h 2))) {2})'
+ ')').format(i, j, pd))
# Print the constraint that they have to be connected to a ps
for i, _ in enumerate(rc, 1+len(pc)):