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

Ejercicios Prolog


Enviado por   •  3 de Abril de 2014  •  1.747 Palabras (7 Páginas)  •  877 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

...

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