[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdegames/kpat/patsolve
From:       Stephan Kulow <coolo () kde ! org>
Date:       2011-01-26 11:48:22
Message-ID: 20110126114823.039ABAC8BA () svn ! kde ! org
[Download RAW message or body]

SVN commit 1217216 by coolo:

mod3 solver: do not ignore valid moves, but give them very
low priority
BUG: 236445


 M  +14 -3     mod3solver.cpp  


--- trunk/KDE/kdegames/kpat/patsolve/mod3solver.cpp #1217215:1217216
@@ -182,6 +182,8 @@
     int first_empty_pile = -1;
     bool foundone = false;
 
+    int firstfree[4] = { -1, -1, -1, -1};
+
     for (int i = 0; i < 32; ++i )
     {
         if ( !Wlen[i] )
@@ -213,6 +215,15 @@
             int current_row = i / 8;
             int row = j / 8;
 
+	    if (!Wlen[j]) {
+	      if (firstfree[row] < 0)
+		firstfree[row] = j;
+	      
+	      //fprintf(stderr, "firstfree %d %d %d\n", row, firstfree[row], j);
+	      if (j != firstfree[row] && row < 4)
+		continue;
+	    }
+	      
             if ( Wlen[j] && RANK( *Wp[j] ) != row + 2 + ( Wlen[j] - 1 ) * 3 )
             {
                 //fprintf( stderr, "rank %d %d\n", i, j );
@@ -238,7 +249,7 @@
                     if ( Wlen[i] == Wlen[j] + 1 )
                         continue;
                 }
-                mp->pri = 12 + 20 * Wlen[j] - current_row * 2;
+                mp->pri = qMin(119, 12 + 20 * Wlen[j] + current_row * 2 + RANK(*Wp[j]) * 5);
 
                 mp->turn_index = -1;
                 if ( i >= 24 && Wlen[i] == 1 && Wlen[deck] )
@@ -295,14 +306,14 @@
         }
     }
 
-    if ( n == 0 && Wlen[deck] )
+    if ( Wlen[deck] )
     {
         // move
         mp->card_index = 0;
         mp->from = deck;
         mp->to = 0;
         mp->totype = W_Type;
-        mp->pri = 0;    /* unused */
+        mp->pri = -77; // last resort
         mp->turn_index = -1;
         mp->card_index = Wlen[deck];
         n++;
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic