1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| (* les listes avec les mêmes éléments, sont égals, même si ces éléments ne sont pas
dans le même ordre *)
let rec egalite l1 l2 = match l1,l2 with
|_::_,[]->false
|[],_::_->false
|[],[]->true
|a::f,b::g-> if appartient a l2 && a=b then egalite f g
else if appartient a l2 && a!=b
then egalite f (remove_element a l2)
else false;;
let rec egalite l1 l2 = match l1, l2 with
| [], [] -> true
| a :: f, b :: g when a = b -> egalite f g
| a :: f, b :: g when appartient a g && appartient b f ->
egalite (remove_element b f) (remove_element a g)
| _ -> false |
Partager