Vérifiez avant d’appliquer
Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
Valide des nœuds entiers de recherche avec deux références d’enfants.
def is_strict_bst(root):
pending, seen, checks = [(root, None, None)], set(), []
while pending:
node, low, high = pending.pop()
if node is None:
continue
if type(node) is not list or len(node) != 3 or type(node[0]) is not int:
raise ValueError("tree.node")
if id(node) in seen or len(seen) == 1000:
raise ValueError("tree.structure")
seen.add(id(node))
value, left, right = node
checks.append((value, low, high))
pending.extend([(right, value, high), (left, low, value)])
return all((low is None or low < value) and
(high is None or value < high) for value, low, high in checks)Comparez le comportement observé au résultat attendu. Si une vérification échoue, cherchez la cause avant de poursuivre les modifications.
Configurez un endpoint compatible OpenAI ou Anthropic avec son URL de base et une clé API si nécessaire. Testez la connexion. Un serveur local doit fonctionner ; les outils distants peuvent transmettre des données séparément.
Teste l’arbre vide et les bornes ancestrales, renvoie faux pour les doublons et refuse cycles, enfants partagés, nœuds malformés ou plus de 1000 nœuds.
def is_strict_bst(root):
pending, seen, checks = [(root, None, None)], set(), []
while pending:
node, low, high = pending.pop()
if node is None:
continue
if type(node) is not list or len(node) != 3 or type(node[0]) is not int:
raise ValueError("tree.node")
if id(node) in seen or len(seen) == 1000:
raise ValueError("tree.structure")
seen.add(id(node))
value, left, right = node
checks.append((value, low, high))
pending.extend([(right, value, high), (left, low, value)])
return all((low is None or low < value) and
(high is None or value < high) for value, low, high in checks)TreeSentinel offre à la maintenance des données structurées un espace de projet sous Windows et une conversation avec IA liée aux fichiers source. Commencez par montrer où l’application reçoit une structure et comment elle utilise le résultat de validation. Demandez au modèle d’examiner toute cette frontière avant de proposer un contrôle simplifié ou un autre parcours.
Une tâche sur bst_order.py pourrait, par exemple, étudier un arbre dont les enfants immédiats semblent ordonnés alors qu’une valeur plus profonde enfreint la borne d’un ancêtre. Incluez la structure en échec et le résultat attendu. Demandez ensuite comment sont traités les nœuds mal formés et les références répétées pour qu’une correction d’ordre n’ignore pas les hypothèses sur la forme parcourue.
Examinez la proposition pour des résultats distincts : arbre valide, défaut d’ordre et structure mal formée. Exécutez les vérifications pertinentes du projet et inspectez la transmission de chaque résultat au consommateur. Explicitez toute modification de la politique de clés dupliquées. Un changement mineur de comparaison peut modifier les données acceptées par l’application environnante.
TreeSentinel se connecte aux points de terminaison compatibles OpenAI ou Anthropic pris en charge, avec les identifiants nécessaires. Vous pouvez sélectionner un modèle d’IA ablité si votre point de terminaison en propose un. Les restrictions du fournisseur, les limites de contexte et les outils disponibles font toujours partie de cette configuration ; la revue doit s’appuyer sur des structures concrètes et des résultats observables plutôt que sur l’assurance du modèle.
Une comparaison locale peut réussir alors qu’un descendant enfreint la borne d’un ancêtre antérieur. Fournissez un petit test imbriqué exposant cette différence et précisez le résultat attendu. Examinez le parcours proposé sur ce cas avant d’accepter une simplification de la validation.
Définissez-le dans le contrat applicatif. L’exemple impose un ordre strict qui exclut les clés égales. Vérifiez si le consommateur distingue une entrée mal formée d’une structure bien formée qui échoue sur l’ordre, et préservez ces conventions de réponse.
Elle peut signifier que l’entrée n’a pas la forme d’arbre attendue, même si les valeurs semblent acceptables. Incluez un test de référence partagée ou de cycle si pertinent. Vérifiez la terminaison et le rejet plutôt que vous fier uniquement à des exemples imbriqués ordinaires.
Seulement après avoir pris en compte la structure et les échecs nécessaires à l’appelant. Contrôler des valeurs aplaties peut masquer des nœuds mal formés ou des hypothèses de parcours. Demandez au modèle d’expliquer ces compromis sur le code réel avant de changer le contrat de validation.
TreeSentinel · Mis à jour 2026-10-25