#include "defs.h" /* one pass improvement in current chip placing */ L_INT iterate() { SKT smin; REG SKT s1, s2; L_INT n, dmin, d, zro; CHP c1, c2; zro = 0; n = 0; scanboard(s1) { if (s1->block) continue; if ((c1 = s1->sktchp) && c1->state == HARD) continue; winker(s1->x, s1->y); dmin = 0; for (s2 = &s1[1]; s2 < Eboard; s2++) { if (s2->block) continue; if (s2->sktchp == s1->sktchp) continue; if (c1 && ((c1->typid & s2->perm) == 0)) continue; if ((c2 = s2->sktchp) && (((c2->typid & s1->perm) == 0) || (c2->state == HARD))) continue; if (c1 && (c1->dx > s2->dx || c1->dy > s2->dy) && expand(s2,c1,1)) continue; if (c2 && (c2->dx > s1->dx || c2->dy > s1->dy) && expand(s1,c2,1)) continue; d = netl(c1, c2, s2->x - s1->x, s2->y - s1->y, zro); if (d < dmin) { dmin = d; smin = s2; } } if (dmin < 0) { n -= dmin; swap(s1, smin); } if (mkfault) return(0); } return(n); }