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

Ejercicios de Programacion Logica


Enviado por   •  27 de Mayo de 2019  •  Tareas  •  561 Palabras (3 Páginas)  •  350 Visitas

Página 1 de 3

member(X,[X|_]).

member(X,[_|Y]):-member(X,Y).

concatenar([],L,L).

concatenar([X|L1],L2,[X|L3]):-concatenar(L1,L2,L3).

supt(X,[],[]).

supt(X,[X|L],L1):-supt(X,L,L1),!.

supt(X,[Y|L],[Y|Lr]):-supt(X,L,Lr),!.

lon([X],1).

lon([X|L],N):-lon(L,M),N is M+1.

encn([X|L],1,X).

encn([X|L],N,E):-M is N-1,encn(L,M,E).

maximo([X],X).

maximo([Y|L],X):-maximo(L,R),(Y>R,X is Y;X is R),!.

minimo([X],X).

minimo([Y|L],X):-minimo(L,R),(Y

repe([X,X|L]).

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

verconj([X]).

verconj([X|L]):- not(repe([X|L])),verconj(L).


1.- Adicionar un elemento al frente de una lista.

add(X,L,[X|L]).

2.- Eliminar un elemento al frente de un a lista.

sup(X,[X|L],L).

3.-

Verificar si un elemento es el último de una lista.

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

4.- Adicionar un elemento al final de una lista.

add1(X,[],[X]).
add1(X,L,[L|X]).

5.- Eliminar un elemento al final de una lista.

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

6.- Eliminar un elemento cualquiera de una lista.

sup2(X,[X|L],L).
sup2(X,[Y|L],[Y|L1]):-sup2(X,L,L1),!.

7.- Verificar si un elemento es el próximo de otro en una lista.

proximo(X,Y,[Y,X|_]).
proximo(X,Y,[Z|L]):-proximo(X,Y,L).

8.- Verificar si un elemento es el anterior de otro en una lista.

antes(X,Y,[X,Y|_]).
antes(X,Y,[Z|L]):-antes(X,Y,L).

9.- Verificar si un elemento es el próximo
 de otro en una lista (no necesariamente seguidos).

post(X,Y,[Y|L]):-member(X,L).
post(X,Y,[Z|L]):-post(X,Y,L).

10.- Verificar si un elemento es el anterior de otro en una lista (no necesariamente seguidos).

anterior(X,Y,L):-concatenar(L1,[Y|L2],L),member(X,L1).

11.- Eliminar de una lista un elemento X que se encuentre inmediatamente después de otro Y.

supseg(X,Y,L,Lr):-concatenar(L1,[Y,X|L2],L),concatenar(L1,[Y|L2],Lr).

12.- Eliminar de una lista un elemento X que se encuentre después de otro Y, no necesariamente seguidos.

elimdes(X,Y,L,L1):-concatenar(A,[Y|L2],L),sup2(X,L2,L3),concatenar(A,[Y|L3],L1).

13.- Eliminar de una lista todos los elementos X que se encuentren después de otro Y.

elimtdes(X,Y,L,Lr):-concatenar(A,[Y|L1],L),supt(X,L1,L2),concatenar(A,[Y|L2],Lr).

14.- Adicionar de una lista un elemento X que se encuentre inmediatamente después de otro Y.

addseg(X,Y,L,Lr):-concatenar(L1,[Y|L2],L),concatenar(L1,[Y,X|L2],Lr).

15.- Eliminar de una lista un elemento X que se encuentre inmediatamente antes de otro Y.

supant(X,Y,L,Lr):-concatenar(L1,[X,Y|L2],L),concatenar(L1,[Y|L2],Lr).

16.- Adicionar en una lista un elemento X que se encuentre inmediatamente antes de otro Y.

addant(X,Y,L,Lr):-concatenar(L1,[Y|L2],L),concatenar(L1,[X,Y|L2],Lr),!.

17.- Dividir una lista en 2 que no contengan un elemento dado, en donde las sublistas creadas sean las correspondientes derecha e izquierda de dicho elemento.

dividir(X,[],[],[]).
dividir(X,[X|L],[],L):-!.
dividir(X,[Y|Cola],[Y|L1],L2):-dividir(X,Cola,L1,L2),!.

18.- Concatenar 2 listas.

concatenar([],L,L).
concatenar([X|L1],L2,[X|L3]):-concatenar(L1,L2,L3).

19.- Resolver el ejercicio 17 con concatenar.

divi(X,L,L1,L2):-concatenar(L1,[X|L2],L).

20.- Resolver el ejercicio 7 utilizando concatenar.

verifprox(X,Y,L):-concatenar(_,[Y,X|_],L).

21.- Resolver el predicado miembro utilizando concatenar.

miembro(X,L):-concatenar(_,[X|_],L).

22.- Usando concatenar resolver el ejercicio 3.

veriult(X,L):-concatenar(_,[X],L).

23.- Usando concatenar eliminar los 3 últimos elementos de una lista.

elim3(L,L1):-concatenar(L1,[_,_,_],L),!.

24.- Resolver el predicado miembro usando el predicado eliminar del ejercicio 6.

miem(X,L):-sup2(X,L,_).

25.- Adicionar un elemento a una lista en cualquier posición. Utilice el predicado eliminar del ejercicio 6.

adde(X,L,L1):-sup2(X,L1,L).

26.- Generar una permutación de los elementos de una lista. Utilice el predicado adicionar anterior.

permutar([X|L],L1):-adde(X,L,L1).

27.- Resolver el ejercicio anterior con el predicado eliminar del ejercicio 6.

permutar1([X|L],L1):-sup2(X,L1,L).

28.- Definir un predicado que determine si una lista tiene un número impar de términos.

impar([_]).
impar([_,_|L]):-impar(L).

29.- Definir un predicado que determine si una lista tiene un número par de términos.

par([]).
par([_,_|L]):-par(L).

30.- Invertir una lista.

inv([X,Y],[Y|[X]]).
inv([X|L],L1):-inv(L,L2),concatenar(L2,[X],L1),!.

31.- Verificar si una lista es sublista de otra.

subl1(L1,[L1,_]).
subl1(L1,[X|L]):-subl(L1,L).

32.- Verificar si una lista es sublista de otra.

subl(L1,L):-concatenar(L1,_,L).
subl(L1,[X|L]):-subl(L1,L).

33.- Definir un predicado que determine si una lista es simétrica.

simetric(L,L1):-inv(L,L2),L1 == L2.

34.- Definir un predicado que rote a la izquierda cíclicamente una lista.

riz(L,L1):-concatenar([X],L2,L),concatenar(L2,[X],L1),!.

35.- Definir un predicado que rote a la derecha cíclicamente una lista.

rde(L,L1):-concatenar(L2,[X],L),concatenar([X],L2,L1),!.

36.- Definir un predicado que rote n veces a la izquierda cíclicamente una lista.

rin(1,L,L1):-riz(L,L1).
rin(N,L,L1):-N>1,M is N-1,rin(M,L,L2),riz(L2,L1).

37.- Definir un predicado que rote n veces a la derecha cíclicamente una lista.

rdn(1,L,L1):-rde(L,L1).
rdn(N,L,L1):-N>1,M is N-1,rdn(M,L,L2),rde(L2,L1).

38.- Si existen predefinidos un conjunto de hechos sig(N,S), donde N es un número entero y S es un átomo, defina un procedimiento que traduzca una lista de enteros en sus correspondientes símbolos.

sig(0,cero).
sig(1,uno).
sig(2,dos).
sig(3,tres).
sig(4,cuatro).
sig(5,cinco).
sig(6,seis).
sig(7,siete).
sig(8,ocho).
sig(9,nueve).
traducir([X],[Y]):-sig(X,Y).
traducir([X|L],[Y|Lr]):-traducir(L,Lr),sig(X,Y).

39.- Definir un predicado que divida una lista en 2 de iguales longitudes.

divide1([X],[],[X]).
divide1(L,L1,L2):-lon(L,N),M is N//2, encn(L,M+1,E), concatenar(L1,[E|L3],L), concatenar([E],L3,L2),!.

40.- Definir un predicado que divida una lista en 2 de iguales longitudes.

divide2([X],[X],[]).
divide2(L,L1,L2):-(lon(L,N),N mod 2 =:=0,M is N//2, encn(L,M+1,E), concatenar(L1,[E|L3],L), concatenar([E],L3,L2),!);(lon(L,N),M is N//2, encn(L,M+2,E), concatenar(L1,[E|L3],L), concatenar([E],L3,L2),!).

41.- Definir el máximo y el mínimo de una lista.

maxmin([X],X,X).
maxmin(L,M,N):-maximo(L,M),minimo(L,N).

43.- Dadas dos listas LA=[A1...An] LB=[B1...Bn], obtener:
P=Sumatoria Ai * B(n-i+1).

44.- Definir un predicado que adicione un elemento a la lista si esta representa un conjunto (o sea los elementos no se repiten y no tienen un orden dado).

adcon(X,[],[X]).
adcon(X,L,Lr):-verconj(L),add(X,L,Lr),not(repe(Lr)).

45.- Verificar si 2 conjuntos son iguales.

ig([],[]).
ig([X|L1],L2):-verconj([X|L1]),verconj(L2),sup2(X,L2,L3),ig(L1,L3).

...

Descargar como (para miembros actualizados)  txt (6.8 Kb)   pdf (78.2 Kb)   docx (8.9 Kb)  
Leer 2 páginas más »
Disponible sólo en Clubensayos.com