Laboratorio - 6 Ejercicio

Laboratorio 6 EJERCICIOS PROPUESTOS LISTAS 1.Hallar la longitud de una lista (es decir, el número de elementos que conti

Views 24 Downloads 0 File size 14KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Laboratorio 6 EJERCICIOS PROPUESTOS LISTAS 1.Hallar la longitud de una lista (es decir, el número de elementos que contiene). domains l1=integer* num=integer predicates nondeterm lista(l1) nondeterm pasar(l1,num) nondeterm cantidad clauses lista([10,5,7,1,3,67,1]). cantidad:-lista([_|C]),pasar(C,1). pasar([],N):-write(N). pasar(C,N):-C=[_|Y],N1=N+1,pasar(Y,N1). goal cantidad. 2.Contar el número de veces que un elemento se encuentra repetido en una lista. 3. Escribir un programa en prolog que calcule la suma del primer y último elemento de una lista que contiene números. domains l1=integer* num=integer predicates nondeterm invertir(l1,l1) nondeterm concatenar(l1,l1,l1) nondeterm suma(l1,num) clauses concatenar([],A,A). concatenar([A|B],X,[A|C]):-concatenar(B,X,C). invertir([A],[A]). invertir([A|B],C):-invertir(B,D), concatenar(D,[A],C). suma([X|Y],B):-G=[X|Y],write(G),nl, A1=X,invertir(Y,[Q|_]),A2=Q,B=A1+A2. goal suma([10,5,04,7,8,6],SUMA). 4 Escribir un programa en prolog que calcule la suma de los N PRIMEROS elementos de una lista que contiene números. 5 Escriba un programa en prolog que devuelva el primer elemento de una lista y e l ultimo elemento de una lista. domains l1=integer* num=integer predicates nondeterm invertir(l1,l1)

nondeterm concatenar(l1,l1,l1) nondeterm inifin(l1,num,num) clauses concatenar([],A,A). concatenar([A|B],X,[A|C]):-concatenar(B,X,C). invertir([A],[A]). invertir([A|B],C):-invertir(B,D), concatenar(D,[A],C). inifin([X|Y],B,C):-G=[X|Y],write(G),nl,B=X,invertir(Y,[Q|_]),C=Q. goal inifin([10,5,04,7,8,6],INICIO,FIN). 6 Añadir un elemento en una lista por la parte final. add2(5,[a,b,c,d],NL). NL->[a ,b,c,d,5] domains l1=integer* predicates nondeterm concatenar(l1,l1,l1) clauses concatenar([],A,A). concatenar([A|B],X,[A|C]):-concatenar(B,X,C). goal concatenar([5,4,7,565],[3,5,8],X). 7 Eliminar el último elemento de una lista. domains l1=integer* predicates nondeterm invertir(l1,l1) nondeterm concatenar(l1,l1,l1) nondeterm eliminar(l1,l1) clauses concatenar([],A,A). concatenar([A|B],X,[A|C]):-concatenar(B,X,C). invertir([A],[A]). invertir([A|B],C):-invertir(B,D), concatenar(D,[A],C). eliminar(Z,X):-invertir(Z,A),A=[_|W],invertir(W,X). goal eliminar([10,5,04,7,8,6],X). 8 Elaborar un programa en PROLOG que genera una lista de N números positivos. domains i=integer predicates 10 Dada una lista de números, escribir los predicados PROLOG necesarios para halla r el elemento mínimo y el máximo.

Ejemplo: minimo([4,6,2,7,9,0],Min). % PROLOG respondería Min=0 Ejemplo: ma ximo([4,6,2,7,9,0],Max). % PROLOG respondería Max=9 domains numero = integer listanumeros = numero * predicates list_min(numero,listanumeros). list_min2(numero,numero,listanumeros). clauses list_min(M, [X|Xs]):list_min2(M, X, Xs). list_min2(M, M, []):- !. list_min2(X, Y, [Z|Zs]):Z = Y, list_min2(X, Y, Zs). goal list_min(M,[0,1,2,3,5,7,-2,-3,-4]). domains numero = integer listanumeros = numero * predicates list_max(numero,listanumeros). list_max2(numero,numero,listanumeros). clauses list_max(M, [X|Xs]):list_max2(M, X, Xs). list_max2(M, M, []):- !. list_max2(X, Y, [Z|Zs]):Z >= Y, !, list_max2(X, Z, Zs). list_max2(X, Y, [Z|Zs]):Z = 0, !, pos_y_neg(RL1,RL2,L3). pos_y_neg([N|RL1],L2,[N|RL3]) :% N < 0, pos_y_neg(RL1,L2,RL3). goal pos_y_neg([3,-1,9,0,-3,-5,-8],Pos,Neg). 12 Escribir un programa en prolog que lea una secuencia de 10 números como máximo y los almacene en una estructura de tipo lista. El programa debe devolver la lista inversa. v = { 8, 4, 2, 6, 0, 1, 7, 6, 6, 5 } v-1 = { 5, 6, 6, 7, 1, 0, 6, 2, 4, 8 } domains nro=integer lista=nro* predicates nondeterm ingreso(nro,lista) nondeterm leer clauses ingreso(0,[]). ingreso(N,L):-N1=N-1, ingreso(N1,L1), write("Ingrese Numero= "), readint(E), L=[E|L1]. leer:-write("Ingrese Cantidad Números= "),readint(N),11>N, ingreso(N,L), write("Lista ","\n",L),nl. goal leer.