ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Ejercicios Prolog


Enviado por   •  3 de Abril de 2014  •  1.747 Palabras (7 Páginas)  •  899 Visitas

Página 1 de 7

Ejercicios PROLOG

1- Determina si lo que recibe es una lista

lista([]):-!.

lista([X|Y]):-lista(Y). lista([12,5,3,7,4]).

true.

lista(4).

false.

2- Concatena dos listas

concatenar([],L,L).

concatenar([X|M],L,[X|Z]):-concatenar(M,L,Z). concatenar([a,n,a],[21],A).

A = [a, n, a, 21]

3- Invierte la lista que recibe en el primer nivel

invertir([X],[X]).

invertir([X|M],Z):-invertir(M,S), concatenar(S,[X],Z). invertir([1,2,3,4],A).

A = [4, 3, 2, 1]

4- Calcula la longitud de la lista

long([],0):-!.

long([X|Y],S):-long(Y,T),!, S is T + 1. long([a,n,a],A).

A = 3.

5- Suma los elementos de la lista

suma_elem([X],X):-!.

suma_elem([X|Y],S):-suma_elem(Y,T), S is T + X. suma_elem([1,2,5],A).

A = 8.

6- Devuelve el posición que se encuentra en la enésima posición

posición_n([],N,[]):-¡.

posición_n([X|N],1,X):-¡.

posicion_n([X|R],N,S):-M is N – 1,posicion_n(R,M,S). posicion_n([1,3,6,9],4,A).

A = 9.

7- Dan como resultado el primer y el último elemento de la lista

primer_elem([X|Y],X):-!.

ultimo_elem(L,S):-invertir(L,T),primer_elem(T,S).

primer_elem([2,5,3,7,a],A).

A = 2.

ultimo_elem([2,5,3,7,a],A).

A = a

8- Calcula la primer posición donde aparece el elemento X en la lista

prim_pos(X,[],0):-!.

prim_pos(X,[X|M],1):-!.

prim_pos(X,[Y|M],S):-prim_pos(X,M,T),S is T + prim_pos(3,[1,2,1,3,a],A).

A = 4.

9- Elimina el elemento x de la lista en todos los niveles

elimina_x([],X,[]):-!.

elimina_x([X],X,[]):-!.

elimina_x([X|M],X,S):-elimina_x(M,X,S),!.

elimina_x([R|M],X,S):-lista(R), elimina_x(R,X,T), elimina_x(M,X,P), concatenar([T],P,S).

elimina_x([R|M],X,S):-elimina_x(M,X,T), concatenar([R],T,S).

elimina_x([1,3,4,56,23,12],4,A).

A = [1, 3, 56, 23, 12]

10- Invierte una lista en todos sus niveles

invertir_tot([],[]):-!.

invertir_tot([X|M],S):-lista(X),invertir_tot(X,P),invertir_tot(M,T),concatenar(T,[P],S).

invertir_tot([X|M],S):-invertir_tot(M,T),concatenar(T,[X],S),!. invertir_tot([23,5,3,6,78,4,12],A).

A = [12, 4, 78, 6, 3, 5, 23].

11- Saca los n primeros elementos de una lista y devuelve el resto

sac_n_pri([],N,[]):-!.

sac_n_pri([X|M],1,M):-!.

sac_n_pri([X|M],N,S):-N1 is N-1,sac_n_pri(M,N1,S).

sac_n_pri([1,45,23,45],2,A).

A = [23, 45].

12- Da como resultado los n primeros elementos de una lista

da_n_pri(L,0,[]):-!.

da_n_pri([],N,[]):-!.

da_n_pri([X|M],1,[X]):-!.

da_n_pri([X|M],N,S):-N1 is N - 1,da_n_pri(M,N1,T),concatenar([X],T,S).

da_n_pri([1,4,23,6,4,3,2],3,A).

A = [1, 4, 23] .

13- Muestra los últimos n elementos de la lista

da_n_ultim(L,N,S):-invertir_tot(L,T),da_n_pri(T,N,R),invertir_tot(R,S).

da_n_ultim([a,n,a],2,A).

A = [n, a] .

14- Determina si dos listas son iguales en todos los niveles

lista_igual([],[]):-!.

lista_igual([X|M],[X|R]):-lista_igual(M,R).

lista_igual([X|M],[T|R]):-lista(X), lista(T), lista_igual(X,T),lista_igual(M,R).

lista_igual([1,2,3],[1,2,3]).

true.

15- Determina si la primer lista es prefijo de la segunda

prefijo([],M):-!.

prefijo([X],[X|M]):-!.

prefijo([X|L],[X|M]):-prefijo(L,M).

prefijo([X|T],[L|M]):-lista(X),prefijo(X,L),prefijo(T,M).

prefijo([a],[na,n,b]).

false.

16-Determina si la primer lista es sub-lista de la segunda

sublista([],L):-!.

sublista(L,[X|M]):-prefijo(L,[X|M]).

sublista(L,[X|M]):-lista(X), sublista(L,X).

sublista(L,[X|M]):-sublista(L,M).

sublista(A,[1,23,45,23,45,23]).

A = [].

17- Elimina todos los elementos de la lista 1 que están en la 2

elim_l1_de_l2([],L,L):-!.

elim_l1_de_l2([X|M],L,S):-elimina_x(L,X,T),elim_l1_de_l2(M,T,S)

elim_l1_de_12([1,3,24,5,6,7,3],B,A).

B = A, A = [].

18- Elimina los elementos repetidos que están en una lista

elim_repet([],[]):-!.

elim_repet([X|M],S):-not lista(X), elimina_x(M,X,T),elim_repet(T,Y),

concatenar([X],Y,S).

elim_repet([X|M],S):-lista(X), elim_l1_de_l2(X,M,T),elim_repet(X,Y),

elim_repet(T,J),concatenar([Y],J,S).

elim_repet([1,3,24,5,6,7,3],A).

A = [1, 3, 24, 5, 6, 7]

19- Arma una lista con todos los elementos que se encuentran antes de elemento x en la lista

hasta_x([X|M],X,[]):-!.

hasta_x([Y|M],X,[Y|S]):-hasta_x(M,X,S).

hasta_x([1,3,2,4,2,5,3,6,5],2,A).

A = [1, 3].

20- Arma una lista con todos los elementos que se encuentran después del elemento x

desde_x([Y|M],X,S):-X=\=Y,desde_x(M,X,S),!.

desde_x([X,Y|M],X,[Y|M]):-X=\=Y,!.

desde_x([Y|M],X,S):-desde_x(M,X,S),!.

desde_x([1,3,2,4,2,5,3,6,5],2,A).

A = [4, 2, 5, 3, 6, 5].

21- Determina si una lista se encuentra en orden creciente o decreciente

creciente([X,Y|Z]):- X<Y,

creciente([Y|Z]).

creciente([X]).

decreciente([X,Y|Z]):- X>Y,

decreciente([Y|Z]).

decreciente([X]).

creciente([1,2,3,4,5,6,7]).

true.

decreciente([7,6,5,4,3,2]).

true.

22- Cuenta la ocurrencia de una lista atómica en otra lista

secuencia([],L,L):-!.

secuencia([X|Y],[X|L],[X|L]):-secuencia(Y,L,L).

cta_ocurr(L,[],0):-!.

cta_ocurr([X|Y],[X|M],N):-secuencia(Y,M,L1), cta_ocurr([X|Y],L1,T), N is T + 1.

cta_ocurr([X|Y],[R|M],N):-cta_ocurr([X|Y],M,N),!.

cta_ocurr([1,2,3],[1,2,3],A).

A = 1

23- Determina si una lista puede analizarse del derecho o del revés

reversible([]):-!.

reversible(L):-invertir(L,R),lista_igual(L,R).

reversible([a,n,a]).

true.

24- Calcula la cantidad de elementos que se encuentran en la misma posición en dos listas

orden(L,[],0):-¡.

Orden([],L,0):-¡.

Orden([X],[X],1):-¡.

Orden([X|Y],[X|Z],S):-orden(Y,Z,T),!, S is T+1.

Orden([X|Y],[R|Z],S):-orden(Y,Z,S).

orden([3,2,5],[1,2,4],A).

A = 1.

25- Arma una lista con todas las posiciones del elemento X en la lista

list_posic(X,[],N,[]):-!.

list_posic(X,[X|M],N,L):-N1 is N + 1,list_posic(X,M,N1,G),P is N + 1,

concatenar([P],G,L).

list_posic(X,[Y|M],N,L):-N1

...

Descargar como (para miembros actualizados) txt (23 Kb)
Leer 6 páginas más »
Disponible sólo en Clubensayos.com