[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