Questions / réponses

parameters_gen erreur particuliere

parameters_gen erreur particuliere

by Marc Cerutti -
Number of replies: 1

Bonjour,

J'ai la fonction parameters_gen qui me renvoie une erreur sur les arbres

Bin (9, Bin (1, Empty, Empty), Empty)
et
Bin (72, Bin (8, Bin (44, Empty, Empty), Bin (26, Empty, Empty)), Bin (40, Bin (9, Empty, Empty), Bin (93, Empty, Empty)))


Seulement lorsque je fait des prédicats divers dessus, la fonction marche normalement.

Je soupçonne du coup que c'est un cas particulier mais je n'arrive pas à mettre la main de où peut venir le problème, si c'est le predicat ou quel résultat est faux.

Je mettrai mon code si besoin.


Merci.


In reply to Marc Cerutti

Re: parameters_gen erreur particuliere

by Marc Zeitoun -

Il y a une erreur au moins sur la dernière composante :

parameters_gen (fun x -> x = 9 ) (Bin (9, Bin (1, Empty, Empty), Empty));;

- : int * int * int * int * int * int = (1, 0, 1, 0, 0, 0)

La dernière composante est la longueur de la plus longue branche qui contient au moins un noeud vérifiant p. Ici, la branche 9--1 est de longueur 1 (elle a une arête) et contient 9 qui vérifie p. Comme il n'y a pas de branches plus longues, la dernière composante doit être 1 sur cet exemple.

Il faut donc réfléchir à la valeur de cette composante lorsque l'étiquette de la racine vérifie le prédicat.

Les tests sont faits avec la fonction fun x -> x mod 3 = 0 (ça peut aider pour les rejouer).