Hola aquí les dejo unos ejercicios sobre conjuntos implementados en Prolog
Un conjunto es una lista pero con la diferencia que en un conjunto no deben haber elementos repetidos, espero les sea de ayuda para sus practicas en este lenguaje.
Implementacion:
- % Autor: Joel Fernandez Segura
- % Fecha: 11/05/2014
- % ------------------ CONJUNTOS -----------------------------
- % ------------- añadir(C,E,CE) ----------------------------
- añadir(X,[],[X]).
- añadir(X,[L|Ls],[L|R]):-añadir(X,Ls,R).
- % ----------------------- pertenece(E,C): E pertenece al conjunto C--------
- pertenece(X,[X|_]):-!.
- pertenece(X,[_|Y]):-pertenece(X,Y).
- %------------------- elimina(CE.E.C) -------------------------
- eliminar(X,[X|Xs],Xs):-!.
- eliminar(X,[Y|Ys],[Y|Lr]):-eliminar(X,Ys,Lr).
- %-------------------- es_conjunto(C) -------------------------
- lista([]).
- lista([_|_]).
- es_conjunto(C):-lista(C).
- % -------------- Conjuntos Iguales (C1,C2)----------------------
- conjuntos_iguales([],_).
- conjuntos_iguales([C1|Cc],C2):- pertenece(C1,C2),conjuntos_iguales(Cc,C2).
- % ------------------------ union(C1,C2,C): union de conjuntos -------------
- union([],C,C).
- union([X|Xs],C2,C):- pertenece(X,C2),union(Xs,C2,C),!.
- union([X|Xs],C2,[X|Zs]):-union(Xs,C2,Zs).
- %------------------------ interseccion(C1,C2,C) -----------------------------
- interseccion([],_,[]).
- interseccion([X|Xs],L,[X|Zs]):-pertenece(X,L), interseccion(Xs,L,Zs),!.
- interseccion([_|Xs],L,Zs):-interseccion(Xs,L,Zs).
- %------------------------- diferencia(C1,C2,C)------------------------------
- diferencia([],_,[]).
- diferencia([X|Xs],L,[X|Zs]):-not(pertenece(X,L)),diferencia(Xs,L,Zs),!.
- diferencia([_|Xs],L,Zs):-diferencia(Xs,L,Zs).
SOCIALIZA ESTO →