chiark / gitweb /
routesearch: change granu to be higher for more specific (more granularity)
authorIan Jackson <ian@liberator.(none)>
Wed, 14 Oct 2009 20:30:42 +0000 (21:30 +0100)
committerIan Jackson <ian@liberator.(none)>
Wed, 14 Oct 2009 20:30:42 +0000 (21:30 +0100)
yarrg/rscommon.h
yarrg/rsmain.c
yarrg/rssearch.c

index f086e57d29c23ca45ea34e89fd00de1461e99552..84fad6fdb4e788d3cb2a3962734de063a71a4619 100644 (file)
@@ -165,7 +165,7 @@ typedef struct {
   PotentialResult *pr;
 } HighScoreEntry;
 
-extern int mingranu;
+extern int granus;
 extern int nhighscores[GRANUS][AP];
 extern HighScoreEntry *highscores[GRANUS][AP];
 
index 04d08ffbf48e9ecc6a2ce4fa34e57c00c6475e33..976aa5a29e4d3a1ed81c44945dcb102a3950b293 100644 (file)
@@ -135,7 +135,7 @@ int main(int argc, const char **argv) {
     }
 
     int mid, fin;
-    for (granui=mingranu; granui<GRANUS; granui++) {
+    for (granui=0; granui<granus; granui++) {
       fprintf(output,"\n");
       for (i=0; i<resultsix; i++) {
        tabdebugf("========== start #%d granui%d %s [PARTIAL] ==========\n",
index 74a2f4504feb0840444a3da69cbd166333010aa5..9676640aafc9e3a28a14b2374660d777e5806c55 100644 (file)
@@ -95,13 +95,13 @@ static double process_route(int nports, int totaldist,
 
   PotentialResult *buckets[GRANUS];
   int granui;
-  for (granui=mingranu; granui<GRANUS; granui++) {
+  for (granui=0; granui<granus; granui++) {
     PotentialResult **buckets_fin;
     int mid, fin;
     switch (granui) {
-    case 0: fin=finisle; mid=midisle; break;
+    case 0: fin=finarch; mid=midarch; break;
     case 1: fin=finisle; mid=midarch; break;
-    case 2: fin=finarch; mid=midarch; break;
+    case 2: fin=finisle; mid=midisle; break;
     default: abort();
     }
     buckets_fin= ONDEMAND(buckets_base[granui][fin], granusz_mid[granui]);
@@ -109,8 +109,8 @@ static double process_route(int nports, int totaldist,
   }
 
   if (nports>=2) {
-    if (guess[A] <= buckets[mingranu]->value[A] &&
-       guess[P] <= buckets[mingranu]->value[P]) {
+    if (guess[A] <= buckets[0]->value[A] &&
+       guess[P] <= buckets[0]->value[P]) {
       ctr_routes_bucketelim++;
       debugf(" ELIM %f %f\n", guess[A], guess[P]);
       return guess[A];
@@ -129,7 +129,7 @@ static double process_route(int nports, int totaldist,
     return value[0];
   }
 
-  for (granui=mingranu; granui<GRANUS; granui++) {
+  for (granui=granus-1; granui>=0; granui--) {
     PotentialResult *bucket= buckets[granui];
 
     if (value[A] <= bucket->value[A] &&
@@ -215,7 +215,7 @@ void search(int start_isle, int final_isle_spec,
 
 int nhighscores[GRANUS][AP];
 HighScoreEntry *highscores[GRANUS][AP];
-int mingranu, granusz_fin[GRANUS], granusz_mid[GRANUS];
+int granus=GRANUS, granusz_fin[GRANUS], granusz_mid[GRANUS];
 
 int narches;
 char **archnames;
@@ -254,7 +254,7 @@ void setup_search(void) {
   }
   sqlite3_finalize(archs);
 
-  granusz_fin[0]=                granusz_mid[0]= islandtablesz;
+  granusz_fin[0]=                granusz_mid[0]= narches;
   granusz_fin[1]= islandtablesz; granusz_mid[1]= narches;
-  granusz_fin[2]=                granusz_mid[2]= narches;
+  granusz_fin[2]=                granusz_mid[2]= islandtablesz;
 }