Bonsoir,
j'essaye comme le titre l'indique de supprimer les doublons dans une liste de pairs.
J'ai essayé sans trop de succés.
Merci de votre aide.
Dark3
Bonsoir,
j'essaye comme le titre l'indique de supprimer les doublons dans une liste de pairs.
J'ai essayé sans trop de succés.
Merci de votre aide.
Dark3
si tu montrais ton code, on essaierait de le corriger... mais on ne va pas te le faire
l'algo simple serait de cette forme :
bien entendu le traitement doit être récursif avec une filtrage... mais c'est à toi de le coder
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10L = liste res = Liste vide tant que L non vide faire a = tete de L si a n'appartient pas à queue de L alors ajoute a dans res L = queue de L fait renvoyer res
![]()
Bonsoir,
oui effectivement je n'avais pas mis mon code dsl :
Dans ce code il manque le fait de tester les elements avec chaque autre pair dans la liste, c'est à dire que si les elements identiques ne sont pas consécutifs, ma fonction ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 let rec enleve l = match l with []->[] | (a,b)::(c,d)::l' -> if a=c && b=d then (a,b)::(enleve l') else (a,b)::(c,d)::(enleve l');;
Je prefererai avoir une solution fonctionnel.
Merci de votre aide.
Dark3
Envoyé par Dark3
j'ai fait exprès de ne pas te donner la version fonctionnelle, ce qui aurait été équivalent à te donner le programme déjà coder... traduis toi-même
nb: on se moque du type de l'élément, ocaml réussira à déterminer l'égalité... donc fait comme si on avait une liste d'éléments d'un type quelconque
Je comprend bien l'algo, mais je ne saisis pas comment tester l'appartenance d'un element dans la liste de retour si celle si n'est pas déclaré et n'est créer qu'avec la recursivité (a:enleve l))
Merci de ton aide en tout cas (c bientot l'exam de caml :/)
Dark3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 let rec appartient e l = match l with [] -> false |a::_ where a=e -> true |_::q -> appartient e q ;;
étant donné que ce n'est qu'un bloc utile, je te le donne... même si avec un peu de reflexion, tu aurais du y arriver (ou alors tu as de gros soucis à te faire pour ton exam !!!)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 let rec appartient e l = match l with [] -> false |a::_ when a=e -> true |_::q -> appartient e q ;;
Partager