smart-thinking-mcp
Version:
Un serveur MCP avancé pour le raisonnement multi-dimensionnel, adaptatif et collaboratif
202 lines (201 loc) • 6.54 kB
TypeScript
/**
* math-evaluator.ts
*
* Module optimisé pour la détection et l'évaluation performante d'expressions mathématiques dans un texte.
* Utilise l'algorithme Shunting-Yard, une mise en cache des résultats, et des tables de lookup pour les opérateurs.
*/
import { CalculationVerificationResult } from '../types';
/**
* Résultat détaillé de l'évaluation d'une expression mathématique
*/
export interface MathEvaluationResult {
original: string;
expressionText: string;
result: number;
isCorrect: boolean;
claimedResult: number;
confidence: number;
context?: string;
}
/**
* Classe utilitaire optimisée pour la détection et l'évaluation d'expressions mathématiques
*/
export declare class MathEvaluator {
/**
* Cache pour les expressions évaluées
* @private
*/
private static readonly expressionCache;
/**
* Types d'expressions mathématiques supportées (précompilées)
* @private
*/
private static readonly EXPRESSION_TYPES;
/**
* Expression régulière pour détecter les notations de fonctions (précompilée)
* @private
*/
private static readonly FUNCTION_NOTATION_REGEX;
/**
* Expression régulière pour extraire les revendications de résultat (précompilée)
* @private
*/
private static readonly CLAIMED_RESULT_REGEX;
/**
* Seuil de tolérance relatif pour comparer les nombres
* @private
*/
private static readonly RELATIVE_EPSILON;
/**
* Seuil de tolérance absolu minimal pour les petits nombres
* @private
*/
private static readonly ABSOLUTE_EPSILON;
/**
* Table de lookup pour la précédence des opérateurs dans l'algorithme Shunting-Yard
* @private
*/
private static readonly OPERATOR_PRECEDENCE;
/**
* Table de lookup pour l'associativité des opérateurs dans l'algorithme Shunting-Yard
* @private
*/
private static readonly OPERATOR_ASSOCIATIVITY;
/**
* Table de lookup pour les fonctions d'opération dans l'algorithme Shunting-Yard
* @private
*/
private static readonly OPERATOR_FUNCTIONS;
/**
* Détecte et évalue toutes les expressions mathématiques dans un texte
*
* @param text Texte à analyser
* @returns Tableau des résultats d'évaluation pour chaque expression trouvée
*/
static detectAndEvaluate(text: string): MathEvaluationResult[];
/**
* Détecte les notations de fonctions mathématiques
* qui ne doivent pas être évaluées comme des calculs
*
* @param text Texte à analyser
* @returns Tableau des notations de fonctions trouvées
* @private
*/
private static detectFunctionNotations;
/**
* Détecte et évalue les expressions séquentielles
* (expressions avec plusieurs égalités en chaîne)
*
* @param text Texte à analyser
* @param results Tableau des résultats à compléter
* @private
*/
private static detectSequentialExpressions;
/**
* Convertit une expression séquentielle en expression évaluable
*
* @param expr Expression à convertir
* @returns Expression prête pour l'évaluation
* @private
*/
private static convertSequentialExpression;
/**
* Détecte et évalue les expressions d'un type spécifique dans un texte
*
* @param text Texte à analyser
* @param type Type d'expression à rechercher
* @param results Tableau des résultats à compléter
* @private
*/
private static detectExpressionsOfType;
/**
* Vérifie si une expression est une notation de fonction mathématique
*
* @param expr Expression à vérifier
* @returns Vrai si c'est une notation de fonction
* @private
*/
private static isFunctionNotation;
/**
* Compare deux nombres en tenant compte des erreurs d'arrondi
*
* @param a Premier nombre
* @param b Deuxième nombre
* @returns Vrai si les nombres sont considérés égaux
* @private
*/
private static areNumbersEqual;
/**
* Convertit les résultats d'évaluation au format CalculationVerificationResult
* utilisé par le système de vérification
*
* @param evaluationResults Résultats d'évaluation à convertir
* @returns Liste des résultats de vérification de calculs
*/
static convertToVerificationResults(evaluationResults: MathEvaluationResult[]): CalculationVerificationResult[];
/**
* Extrait l'expression standard à partir d'une expression complète
*
* @param expr Expression complète
* @returns Expression standard
* @private
*/
private static extractStandardExpression;
/**
* Extrait l'expression avec parenthèses à partir d'une expression complète
*
* @param expr Expression complète
* @returns Expression avec parenthèses
* @private
*/
private static extractParenthesesExpression;
/**
* Extrait l'expression de fonction à partir d'une expression complète
*
* @param expr Expression complète
* @returns Expression de fonction
* @private
*/
private static extractFunctionExpression;
/**
* Nettoie une expression mathématique pour l'évaluation
*
* @param expr Expression à nettoyer
* @returns Expression nettoyée
* @private
*/
private static sanitizeExpression;
/**
* Convertit une expression textuelle en expression mathématique
*
* @param textExpr Expression textuelle
* @returns Expression mathématique
* @private
*/
private static convertTextToMathExpression;
/**
* Évalue une expression de manière sécurisée
* Utilise la mise en cache et l'algorithme Shunting-Yard pour les expressions normales
*
* @param expr Expression à évaluer
* @returns Résultat de l'évaluation
* @private
*/
private static safeEvaluate;
/**
* Évalue une expression Math.* de manière sécurisée
*
* @param expr Expression Math.* à évaluer
* @returns Résultat de l'évaluation
* @private
*/
private static evaluateMathExpression;
/**
* Implémentation de l'algorithme Shunting-Yard pour l'évaluation d'expressions
*
* @param expr Expression à évaluer
* @returns Résultat de l'évaluation
* @private
*/
private static evaluateWithShuntingYard;
}