chiark / gitweb /
routesearch: abandon higher granuarities when tables become full
authorIan Jackson <ian@liberator.(none)>
Wed, 14 Oct 2009 20:33:27 +0000 (21:33 +0100)
committerIan Jackson <ian@liberator.(none)>
Wed, 14 Oct 2009 20:33:27 +0000 (21:33 +0100)
yarrg/rssearch.c

index 9676640..31ec3d7 100644 (file)
@@ -139,6 +139,7 @@ static double process_route(int nports, int totaldist,
     debugf(" SOMEHOW %d BEST\n",granui);
 
     fildebugf("final %d:%3d mid %d ",finarch,finisle,midarch);
     debugf(" SOMEHOW %d BEST\n",granui);
 
     fildebugf("final %d:%3d mid %d ",finarch,finisle,midarch);
+    int relevant=0;
 
     for (ap=0; ap<AP; ap++) {
       HighScoreEntry *scores= highscores[granui][ap];
 
     for (ap=0; ap<AP; ap++) {
       HighScoreEntry *scores= highscores[granui][ap];
@@ -170,11 +171,16 @@ static double process_route(int nports, int totaldist,
        if (pos>0) {
          scores[pos].value= value[ap];
          scores[pos].pr= bucket;
        if (pos>0) {
          scores[pos].value= value[ap];
          scores[pos].pr= bucket;
+         relevant=1;
        }
        fildebugf("@%2d", pos);
        }
        fildebugf("@%2d", pos);
-      }
-    }
-  }
+      } /* new best */
+    } /* ap */
+    if (!relevant)
+      /* both absolute and perleague are full at this granularity,
+       * so we don't care about anything more granular */
+      granus= granui+1;
+  } /* granui */
 
   fildebugf(" route");
 
 
   fildebugf(" route");