fix : improve great move classification

This commit is contained in:
GuillaumeSD
2024-04-17 01:36:00 +02:00
parent b171edb8ad
commit dd2265288f
2 changed files with 32 additions and 8 deletions

View File

@@ -34,9 +34,7 @@ export const getChessComUserRecentGames = async (
} }
const gamesToReturn = games const gamesToReturn = games
.sort((a, b) => { .sort((a, b) => b.end_time - a.end_time)
return b.end_time - a.end_time;
})
.slice(0, 50); .slice(0, 50);
return gamesToReturn; return gamesToReturn;

View File

@@ -147,14 +147,31 @@ const isBrilliantMove = (
); );
if (!isPieceSacrifice) return false; if (!isPieceSacrifice) return false;
const isNotLosing = isWhiteMove if (
? positionWinPercentage >= 50 isLosingOrAlternateCompletelyWinning(
: positionWinPercentage <= 50; positionWinPercentage,
lastPositionAlternativeLineWinPercentage,
isWhiteMove
)
)
return false;
return true;
};
const isLosingOrAlternateCompletelyWinning = (
positionWinPercentage: number,
lastPositionAlternativeLineWinPercentage: number,
isWhiteMove: boolean
): boolean => {
const isLosing = isWhiteMove
? positionWinPercentage < 45
: positionWinPercentage > 55;
const isAlternateCompletelyWinning = isWhiteMove const isAlternateCompletelyWinning = isWhiteMove
? lastPositionAlternativeLineWinPercentage > 70 ? lastPositionAlternativeLineWinPercentage > 70
: lastPositionAlternativeLineWinPercentage < 30; : lastPositionAlternativeLineWinPercentage < 30;
return isNotLosing && !isAlternateCompletelyWinning; return isLosing || isAlternateCompletelyWinning;
}; };
const isGreatMove = ( const isGreatMove = (
@@ -179,6 +196,15 @@ const isGreatMove = (
) )
return false; return false;
if (
isLosingOrAlternateCompletelyWinning(
positionWinPercentage,
lastPositionAlternativeLineWinPercentage,
isWhiteMove
)
)
return false;
const hasChangedGameOutcome = getHasChangedGameOutcome( const hasChangedGameOutcome = getHasChangedGameOutcome(
lastPositionWinPercentage, lastPositionWinPercentage,
positionWinPercentage, positionWinPercentage,
@@ -217,5 +243,5 @@ const getIsTheOnlyGoodMove = (
const winPercentageDiff = const winPercentageDiff =
(positionWinPercentage - lastPositionAlternativeLineWinPercentage) * (positionWinPercentage - lastPositionAlternativeLineWinPercentage) *
(isWhiteMove ? 1 : -1); (isWhiteMove ? 1 : -1);
return winPercentageDiff > 5; return winPercentageDiff > 10;
}; };