static PotentialResult ***strat_base;
+static inline int isle2arch(int isle) {
+ int arch= islandid2arch[isle];
+ assert(arch>=0);
+ return arch;
+}
+
static double process_route(int nports, int totaldist,
double overestimate_excepting_tail) {
int i;
debugf(" %d",ports[i]);
debugf("\n");
- int finalisle= ports[nports-1];
- int midisle= ports[nports/2];
+ int finisle= ports[nports-1]; int finarch= isle2arch(finisle);
+ int midisle= ports[nports/2]; int midarch= isle2arch(midisle);
- PotentialResult **strat_fin= ONDEMAND(strat_base[finalisle], islandtablesz);
- PotentialResult *strat= ONDEMAND(strat_fin[midisle], 1);
+ PotentialResult **strat_fin= ONDEMAND(strat_base[finarch], narches);
+ PotentialResult *strat= ONDEMAND(strat_fin[midarch], 1);
if (nports>=2) {
int pair[2], i;
debugf(" SOMEHOW BEST\n");
- fildebugf("final %3d mid %3d ",finalisle,midisle);
+ fildebugf("final %d:%3d mid %d:%3d ",finarch,finisle,midarch,midisle);
#define CHK(absperl) \
fildebugf(#absperl " %15f", absperl); \
}
void search(int start_isle, PotentialResult ****strat_base_io) {
- strat_base= ONDEMAND(*strat_base_io, islandtablesz);
+ strat_base= ONDEMAND(*strat_base_io, narches);
recurse(start_isle,0,0,1e6);
}