fix : improve great move classification
This commit is contained in:
@@ -34,9 +34,7 @@ export const getChessComUserRecentGames = async (
|
||||
}
|
||||
|
||||
const gamesToReturn = games
|
||||
.sort((a, b) => {
|
||||
return b.end_time - a.end_time;
|
||||
})
|
||||
.sort((a, b) => b.end_time - a.end_time)
|
||||
.slice(0, 50);
|
||||
|
||||
return gamesToReturn;
|
||||
|
||||
@@ -147,14 +147,31 @@ const isBrilliantMove = (
|
||||
);
|
||||
if (!isPieceSacrifice) return false;
|
||||
|
||||
const isNotLosing = isWhiteMove
|
||||
? positionWinPercentage >= 50
|
||||
: positionWinPercentage <= 50;
|
||||
if (
|
||||
isLosingOrAlternateCompletelyWinning(
|
||||
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
|
||||
? lastPositionAlternativeLineWinPercentage > 70
|
||||
: lastPositionAlternativeLineWinPercentage < 30;
|
||||
|
||||
return isNotLosing && !isAlternateCompletelyWinning;
|
||||
return isLosing || isAlternateCompletelyWinning;
|
||||
};
|
||||
|
||||
const isGreatMove = (
|
||||
@@ -179,6 +196,15 @@ const isGreatMove = (
|
||||
)
|
||||
return false;
|
||||
|
||||
if (
|
||||
isLosingOrAlternateCompletelyWinning(
|
||||
positionWinPercentage,
|
||||
lastPositionAlternativeLineWinPercentage,
|
||||
isWhiteMove
|
||||
)
|
||||
)
|
||||
return false;
|
||||
|
||||
const hasChangedGameOutcome = getHasChangedGameOutcome(
|
||||
lastPositionWinPercentage,
|
||||
positionWinPercentage,
|
||||
@@ -217,5 +243,5 @@ const getIsTheOnlyGoodMove = (
|
||||
const winPercentageDiff =
|
||||
(positionWinPercentage - lastPositionAlternativeLineWinPercentage) *
|
||||
(isWhiteMove ? 1 : -1);
|
||||
return winPercentageDiff > 5;
|
||||
return winPercentageDiff > 10;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user