Bonjour tout le monde,
j'ai un tp prolog où je dois donner la personne ayant le plus de compétences hors le prédicat récursif me renvoi toujours une variable(X).
voici quelques prédicats que j'ai écrit:
-est_repertorie/1 prend en argument le nom d’une personne et rend vrai si cette personne apparait dans la base de compétences, faux/´echec sinon.-
-est_utile/1 prend en argument le nom d’une personne et rend vrai si cette personne est compétente pour au-moins une tâche.
-degre_competence/2 prend en argument le nom d’une personne,et rend un entier correspondant au nombre de tâches que sait faire cette personne.
-lemeilleur/2 prend en argument une liste de personnes, et rend le nom de la personne qui sait faire le plus de tâches.
c'est ce dernier qui me pose problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 competences(pierre,L):-L=[t1,t2,t3,t4]. competences(jean,L):-L=[t5,t6]. competences(luc,L):-L=[t2,t3,t6]. competences(paul,L):-L=[t7,t8,t9]. competences(marc,L):-L=[t2,t5,t9]. competences(clown,L):-L=[]. est_repertorie(X):-competences(X,_). est_utile(X):-competences(X,L),L\=[]. compte([],0). compte([_|L],X):-compte(L,Z),X is Z+1. degre_competence(X,N):-competences(X,L),compte(L,N). %Question qui me pose probleme et ou je dois donner la personne ayant le plus de competences lemeilleur2([],_,_). lemeilleur2([T|Q],_,N):- degre_competence(T,N2), N2>N, lemeilleur2(Q,T,N2). lemeilleur2([T|Q],X,N):- degre_competence(T,N2), N2=<N, lemeilleur2(Q,X,N). lemeilleur([T|Q],X):-degre_competence(T,N), lemeilleur2(Q,T,N).
Quelqu'un peut il m'aider à corriger l'erreur ?
Merci d'avance.
Partager