/*Ejercicio2): Defina un predicado longitud(L,N) el cual es válido si N contiene la longitud de la lista L*/
longuitud([],0).
longuitud([_|A],N):- longuitud(A,B), N is B+1.
/*Ejercicio3): Defina un predicado ocurrencia(X,L,N) el cual es válido si el elemento X aparece N veces en la lista L*/
ocurrencia(_,[],0).
ocurrencia(X,[A|C],N):- X\=A, ocurrencia(X,C,N).
ocurrencia(X,[A|C],N):- X=A, B is N-1, ocurrencia(X,C,B).
/*Ejercicio4): Defina un predicado posicion(N,L,X) el cual es válido si X es el elemento que ocupa la posición N de la lista L*/
posicion(1,[A|_],A).
posicion(N,[_|B],A):- Aux is N-1, posicion(Aux,B,A).
/*Ejercicio5): Defina un predicado concatena(L, M, N) el cuál es válido si la lista N es la concatenación de las listas L y M*/
concatena([],L,L).
concatena([_|A],M,[_|N]):- concatena(A,M,N).
Suscribirse a:
Enviar comentarios (Atom)
2 comentarios:
hola amigo:
tienes un problema en la posicion, recuerde que prolog compila de arriba hacia abajo y de izquierda a derecha, el error es:
Arguments are no sufficiently instantied
el codigo deberia ser asi:
get_pos(E,[E|_],1).
get_pos(E,[_|C],P):- get_pos(E,C,P1),P1 is P - 1.
saludos
perdon deberia ser asi:
%obtener posicion de un elemento en una lista comenzamos por 0
get_pos(E,[E|_],0).
get_pos(E,[_|C],P):- get_pos(E,C,P1), P is P1 + 1.
Publicar un comentario