Tecnico
Profesor: Alejandro T. Bello Ruiz
/* A continuación se presentan 6 ejemplos y se dejan 7 ejercicios. En base a estos 10 ejercicios
se tomarála PC1 */
domains
linteger = integer*
predicates
nondeterm nelemento(integer,linteger,integer)
nondeterm pertenece(integer,linteger)
nondeterm noduplicados(linteger,linteger)sucesion(linteger)
nondeterm divideN(integer,linteger,linteger,linteger)
nondeterm elimina(integer,linteger,linteger)
nondeterm posiciones(integer,linteger,linteger)
nondetermposiciones2(integer,integer,linteger,linteger)
clauses
/* Escriba las cláusulas de un predicado en Prolog que devuelva el elemento enésimo de una lista de enteros. Considere que siempre se puede encontrar elelemento. Por ejemplo
nelemento(4,[5,4,3,2,1],E).
E = 2
*/
nelemento(1,[X|_],X).
nelemento(N,[_|Xs],E):-N>1,N1= N-1,nelemento(N1,Xs,E).
/* Escriba en Prolog un predicado connombre noduplicados que recibe una lista de enteros y devuelve la lista sin elementos duplicados. En caso de que no existieran duplicados, se debe devolver la misma lista. La lista debe estar ordenada.*/pertenece(X,[X|_]).
pertenece(X,[Y|Ys]):- XY,pertenece(X,Ys).
noduplicados([],[]).
noduplicados([X|Xs],L):- noduplicados(Xs,L1), pertenece(X,L1),L=L1.
noduplicados([X|Xs],L):-noduplicados(Xs,L1),not(pertenece(X,L1)),L=[X|L1].
/* Escriba un predicado en Prolog que reciba una lista de por lo menos 3 elementos y verifica que cada elemento es la suma de los dos anteriores apartir del tercero.
Por ejemplo:
sucesion([3,2,5,7,12,19,31])
yes
sucesion([2,1,3,4,7,12]).
no
*/
sucesion([_,_]).sucesion([X,Y,Z|Resto]):-Z=X+Y,sucesion([Y,Z|Resto]).
/*Implementar el predicado divideN(Numero, Lista, L1,L2) que divide a Lista en dos listas: L1 contienen los elementos de Lista hasta la posición N y en L2 el resto...
Regístrate para leer el documento completo.