8 double max_mass=-1, max_volu=-1, max_capi=-1;
9 double distance_loss_factor_per_league;
12 #define CTR(x) int ctr_##x;
16 static PotentialResult ****results;
17 /* results[start_isle_ix][finalisle][midisle]-> */
19 int main(int argc, const char **argv) {
23 debug_flags= ~( dbg_sql2 );
25 sysassert( !setvbuf(debug,0,_IOLBF,0) );
29 if (arg[0] != '-') break;
31 if (!strcmp(arg,"-DN")) {
40 max_mass= atof(*argv++);
41 max_volu= atof(*argv++);
42 max_capi= atof(*argv++);
43 double loss_per_league= atof(*argv++);
45 if (!loss_per_league) loss_per_league= 1e-7;
46 distance_loss_factor_per_league= 1.0 - loss_per_league;
52 fprintf(stderr,"setup complete, starting search\n");
55 if (!strcmp(arg,"specific")) {
57 while ((arg= *argv++))
60 double val= value_route(ni, ia, 0);
61 printf("route value is %g\n", val);
62 } else if (!strcmp(arg,"search")) {
63 MCALLOC(results, argc);
65 max_dist= atoi(*argv++);
66 nhighscores_absolute= atoi(*argv++);
67 nhighscores_perleague= atoi(*argv++);
68 const char *final_isle_spec= *argv++;
70 MCALLOC(highscores_absolute, nhighscores_absolute);
71 MCALLOC(highscores_perleague, nhighscores_perleague);
74 while ((arg= argv[resultsix])) {
75 int init_isle= atoi(arg);
78 if (!strcmp(final_isle_spec,"circ")) final_isle= init_isle;
79 else if (!strcmp(final_isle_spec,"any")) final_isle= -1;
80 else final_isle= atoi(final_isle_spec);
83 search(init_isle, final_isle, &results[resultsix]);
87 int i, midarch, finarch;
88 for (i=0; i<resultsix; i++) {
89 fprintf(stderr,"============== start #%d %s [PARTIAL] ==============\n",
91 PotentialResult ***strat_resultsix= results[i];
92 if (!strat_resultsix) continue;
94 for (midarch=0; midarch<narches; midarch++) {
95 fprintf(stderr,"| mid %d ",midarch);
98 for (finarch=0; finarch<narches; finarch++) {
99 PotentialResult **strat_finarch= strat_resultsix[finarch];
100 if (!strat_finarch) continue;
101 fprintf(stderr,"f%d",finarch);
102 for (midarch=0; midarch<narches; midarch++) {
103 PotentialResult *result= strat_finarch[midarch];
105 fprintf(stderr,"| ");
107 fprintf(stderr,"|%5d",(int)(result->absolute));
109 fprintf(stderr,"%4d",(int)(result->perleague));
112 fprintf(stderr,"\n");
117 #define OUT(absperl) \
118 fprintf(stderr,"\n================== " #absperl " ==================\n"); \
119 for (pos=0; pos<nhighscores_##absperl; pos++) { \
120 HighScoreEntry *hs= &highscores_##absperl[pos]; \
121 PotentialResult *pr= hs->pr; \
123 const int *const ports= pr->absperl##_ports; \
125 for (nports=0; nports<MAX_ROUTELEN && ports[nports]>=0; nports++); \
126 int finisle= ports[nports-1]; int finarch= isle2arch(finisle); \
127 int midarch= route2midarch(ports,nports); \
129 " @%2d #%2d | start%3d mid%d f%d:%3d | %5d %5d %4d |", \
130 pos, nhighscores_##absperl - 1 - pos, \
131 ports[0], midarch, finarch,finisle, \
132 (int)hs->value, (int)pr->absolute, (int)pr->perleague); \
133 for (i=0; i<nports; i++) fprintf(stderr," %d",ports[i]); \
134 fprintf(stderr,"\n"); \
143 #define CTR(x) fprintf(stderr," %-30s %10d\n",#x,ctr_##x);