X-Git-Url: http://winboard.nl/cgi-bin?p=capablanca.git;a=blobdiff_plain;f=lasker-2.2.3%2Fbots%2Fmamer%2FTourney.cc;h=401ed3e6f28fb210a8f6a88bf247c06e587e9dd7;hp=813c938b36196fa7d071b659dabdc4043b6765e4;hb=75ea555a410b0dd3f0f1ab9d3deaa0a6a6cf0be3;hpb=2090edea3ec8c89745b568f7ef61d4c332dd29a8 diff --git a/lasker-2.2.3/bots/mamer/Tourney.cc b/lasker-2.2.3/bots/mamer/Tourney.cc index 813c938..401ed3e 100644 --- a/lasker-2.2.3/bots/mamer/Tourney.cc +++ b/lasker-2.2.3/bots/mamer/Tourney.cc @@ -3,17 +3,13 @@ // // Matthew E. Moses // -// $Revision: 1.12 $ -// $Date: 2002/07/02 00:02:40 $ +// $Revision: 1.11 $ +// $Date: 1998/09/10 19:57:17 $ // -// $Author: tridge $ +// $Author: mlong $ // $Locker: $ // // $Log: Tourney.cc,v $ -// Revision 1.12 2002/07/02 00:02:40 tridge -// - fixed compile on g++ 2.96 -// - updated for lasker 'rmatch' -// // Revision 1.11 1998/09/10 19:57:17 mlong // lots of little bug fixes and a few new features // @@ -43,7 +39,7 @@ // //-------------------------------------------------------------------------- -//static char RCSid[] = "$Id: Tourney.cc,v 1.12 2002/07/02 00:02:40 tridge Exp $"; +//static char RCSid[] = "$Id: Tourney.cc,v 1.11 1998/09/10 19:57:17 mlong Exp $"; #include "Tourney.hh" #include "Mamer.hh" @@ -415,7 +411,7 @@ void Tourney::CloseAndStart(void) { params.rounds = GetPlayerCount() - 1; break; case 's': - params.rounds = (int)ceil(log22(GetPlayerCount())); + params.rounds = (int)ceil(log2(GetPlayerCount())); break; default: params.rounds = DEFAULT_ROUNDS; @@ -633,7 +629,20 @@ void Tourney::SetPairingScores(TourneyPlayers *tp) { playerIter.Reset(); while((opponent = playerIter.Next())) { if(strcmp(tp->name, opponent->name) && (tp->activeFlag !=0)) { // If this isn't MY name & I am active - if((!tp->AlreadyPlayed(opponent->name)) && (!opponent->IsPaired()) && (opponent->activeFlag != 0)) { + if((!tp->AlreadyPlayed(opponent->name)) && (!opponent->IsPaired()) && (opponent->activeFlag != 0) + && (tp->ColorDue() != opponent->ColorDue() // they are due different color, never a problem + || tp->ColorDue() ? // both are due white. Check if one of them could accept black without breaking 'absolute' color rules + tp->GetConsecutiveBlacks() < 2 && + tp->GetTotalBlacks() - tp->GetTotalWhites() < 2 || + opponent->GetConsecutiveBlacks() < 2 && + opponent->GetTotalBlacks() - opponent->GetTotalWhites() < 2 + : // both are due black. Check if any of them can accept white + tp->GetConsecutiveWhites() < 2 && + tp->GetTotalWhites() - tp->GetTotalBlacks() < 2 || + opponent->GetConsecutiveWhites() < 2 && + opponent->GetTotalWhites() - opponent->GetTotalBlacks() < 2 + ) + ) { // and I haven't played this person and this person is active. (not forfeited) t = GetSortPlayer(opponent->name); score = ((abs(t->value - (me->value + offset))) * 1000);