SlideShare una empresa de Scribd logo
1 de 2
Construir los siguientes programas en lenguaje Prolog:
1. suma(Xs, P, I) donde P es la suma de los elementos pares de Xs e I la suma de
los elementos impares de Xs.
Ejemplo:
ß suma([1,2,5,2,6], P, I).
P = 10, I = 6
2. sumapos(Xs, P, I) donde P es la suma de elementos en posiciones pares de la
lista Xs e I la suma de elementos en posiciones impares.
Ejemplo:
ß suma([1,2,5,2,6], P, I).
P = 4, I = 12
3. pos(X, Xs, N) donde N es la posición del elemento X en la lista Xs.
Ejemplo:
ß pos(2,[1,2,5,2,6], N).
N=2;
N=4;

-------------

Se desea desarrollar un programa Prolog que permita intercalar los elementos de dos listas
considerando longitudes distintas para cada tramo de intercalación. Es decir, para cada lista se
indicará
la cantidad de elementos de la misma que se intercalarán sucesivamente para formar la lista
resultante,
por ejemplo:
� intercala([a1, a2, a3, a4, a5, a6], [b1, b2, b3, b4], 3, 2, [a1, a2, a3, b1, b2, a4, a5, a6, b3, b4]).
True
� intercala([a1, a2, a3, a4], [b1, b2], 4, 1, X).
X = [b1, a1, a2, a3, a4, b2]
Debe tenerse en cuenta que cada lista incluya la cantidad de elementos necesaria para ser
intercalada
correctamente y que cualquiera de ellas puede intercalar el tramo inicial o el tramo final.
Resolución:
intercala(L1, L2, N1, N2, R):- intercalar_lista(L1, L2, N1, N2, R).
intercala(L1, L2, N1, N2, R):- intercalar_lista(L2, L1, N2, N1, R).
intercalar_lista([], [], _N1, _N2, []).
intercalar_lista(L1, L2, N1, N2, Result):-
concatenar(PreL1, RestoL1, L1),
largo(PreL1, N1),
intercalar_lista(L2, RestoL1, N2, N1, X),
concatenar(PreL1, X, Result).
% las listas deben tener al menos 1 elemento:
largo([_X], 1).
largo([_X|Xs], N):- largo(Xs, N2), N is N2 + 1.
Ejemplos de consultas:
?– intercala([a1, a2, a3, a4, a5, a6], [b1, b2, b3, b4], 3, 2, [a1, a2, a3, b1, b2, a4, a5, a6, b3, b4]).
Yes
?– intercala([a1, a2, a3, a4, a5, a6], [b1, b2, b3, b4], 2, N, X).
N = 2, X = [a1, a2, b1, b2, a3, a4, b3, b4, a5, a6] ;
N = 1, X = [b1, a1, a2, b2, a3, a4, b3, a5, a6, b4] ;
No
?– intercala([a1, a2, a3, a4], [b1, b2], N, 1, X).
N = 2, X = [a1, a2, b1, a3, a4, b2] ;
N = 2, X = [b1, a1, a2, b2, a3, a4] ;
N = 4, X = [b1, a1, a2, a3, a4, b2] ;
No

--------

c(inicio,1).
c(1,2).
c(2,3).
c(3,4).
c(4,5).
c(5,6).
c(6,7).
c(4,8).
c(8,9).
c(9,10).
c(10,11).
c(11,fin).

c(A,B):-c(B,A).




ruta([inicio,X|Zs]):-c(inicio,X),ruta([X|Zs]).
ruta([X,Y|Zs]):-c(X,Y),ruta([Y|Zs]).
ruta([X,fin]):-c(X,fin),!.

-------------

Más contenido relacionado

La actualidad más candente

Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)edi.euitio
 
Tablas Hash (Patricia Hevia Teixeira)
Tablas Hash (Patricia Hevia Teixeira)Tablas Hash (Patricia Hevia Teixeira)
Tablas Hash (Patricia Hevia Teixeira)edi.euitio
 
Tablas Hashs(Adela Rodríguez Rubio)
Tablas Hashs(Adela Rodríguez Rubio)Tablas Hashs(Adela Rodríguez Rubio)
Tablas Hashs(Adela Rodríguez Rubio)edi.euitio
 
tablahash(marialuisa)
tablahash(marialuisa)tablahash(marialuisa)
tablahash(marialuisa)edi.euitio
 

La actualidad más candente (7)

Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)
 
Arreglos
ArreglosArreglos
Arreglos
 
Función
FunciónFunción
Función
 
Tablas Hash (Patricia Hevia Teixeira)
Tablas Hash (Patricia Hevia Teixeira)Tablas Hash (Patricia Hevia Teixeira)
Tablas Hash (Patricia Hevia Teixeira)
 
Tablas Hashs(Adela Rodríguez Rubio)
Tablas Hashs(Adela Rodríguez Rubio)Tablas Hashs(Adela Rodríguez Rubio)
Tablas Hashs(Adela Rodríguez Rubio)
 
tablahash(marialuisa)
tablahash(marialuisa)tablahash(marialuisa)
tablahash(marialuisa)
 
Algebra de funciones
Algebra de funcionesAlgebra de funciones
Algebra de funciones
 

Similar a Prolog: programas (17)

Python04
Python04Python04
Python04
 
Bryan gordillo ensayo_arreglos
Bryan gordillo ensayo_arreglosBryan gordillo ensayo_arreglos
Bryan gordillo ensayo_arreglos
 
Programacion logica
Programacion logicaProgramacion logica
Programacion logica
 
Practicas prolog2011 listas
Practicas prolog2011 listasPracticas prolog2011 listas
Practicas prolog2011 listas
 
E J P R A C T I C A S P Y T H O N
E J  P R A C T I C A S  P Y T H O NE J  P R A C T I C A S  P Y T H O N
E J P R A C T I C A S P Y T H O N
 
Ejercicios prolog
Ejercicios prologEjercicios prolog
Ejercicios prolog
 
Coeficientes polinomicos y su cadena multidimensional
Coeficientes polinomicos y su cadena multidimensionalCoeficientes polinomicos y su cadena multidimensional
Coeficientes polinomicos y su cadena multidimensional
 
Particiones con repetición o composición de enteros
 Particiones con repetición o composición de enteros Particiones con repetición o composición de enteros
Particiones con repetición o composición de enteros
 
Listas
ListasListas
Listas
 
Guía nº 8 arreglos
Guía nº 8 arreglosGuía nº 8 arreglos
Guía nº 8 arreglos
 
Newton And Neville Interpolation
Newton And Neville InterpolationNewton And Neville Interpolation
Newton And Neville Interpolation
 
Vectores en programacion
Vectores en programacionVectores en programacion
Vectores en programacion
 
Manual de R-Commander
Manual de R-CommanderManual de R-Commander
Manual de R-Commander
 
Estructura De Datos Array
Estructura De Datos ArrayEstructura De Datos Array
Estructura De Datos Array
 
Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6Introducción a la programación y la informática. Tema 6
Introducción a la programación y la informática. Tema 6
 
Cap06 arreglos y vectores.
Cap06 arreglos y vectores.Cap06 arreglos y vectores.
Cap06 arreglos y vectores.
 
Listas prolog m_c
Listas prolog m_cListas prolog m_c
Listas prolog m_c
 

Prolog: programas

  • 1. Construir los siguientes programas en lenguaje Prolog: 1. suma(Xs, P, I) donde P es la suma de los elementos pares de Xs e I la suma de los elementos impares de Xs. Ejemplo: ß suma([1,2,5,2,6], P, I). P = 10, I = 6 2. sumapos(Xs, P, I) donde P es la suma de elementos en posiciones pares de la lista Xs e I la suma de elementos en posiciones impares. Ejemplo: ß suma([1,2,5,2,6], P, I). P = 4, I = 12 3. pos(X, Xs, N) donde N es la posición del elemento X en la lista Xs. Ejemplo: ß pos(2,[1,2,5,2,6], N). N=2; N=4; ------------- Se desea desarrollar un programa Prolog que permita intercalar los elementos de dos listas considerando longitudes distintas para cada tramo de intercalación. Es decir, para cada lista se indicará la cantidad de elementos de la misma que se intercalarán sucesivamente para formar la lista resultante, por ejemplo: � intercala([a1, a2, a3, a4, a5, a6], [b1, b2, b3, b4], 3, 2, [a1, a2, a3, b1, b2, a4, a5, a6, b3, b4]). True � intercala([a1, a2, a3, a4], [b1, b2], 4, 1, X). X = [b1, a1, a2, a3, a4, b2] Debe tenerse en cuenta que cada lista incluya la cantidad de elementos necesaria para ser intercalada correctamente y que cualquiera de ellas puede intercalar el tramo inicial o el tramo final. Resolución: intercala(L1, L2, N1, N2, R):- intercalar_lista(L1, L2, N1, N2, R). intercala(L1, L2, N1, N2, R):- intercalar_lista(L2, L1, N2, N1, R). intercalar_lista([], [], _N1, _N2, []). intercalar_lista(L1, L2, N1, N2, Result):- concatenar(PreL1, RestoL1, L1), largo(PreL1, N1), intercalar_lista(L2, RestoL1, N2, N1, X), concatenar(PreL1, X, Result). % las listas deben tener al menos 1 elemento:
  • 2. largo([_X], 1). largo([_X|Xs], N):- largo(Xs, N2), N is N2 + 1. Ejemplos de consultas: ?– intercala([a1, a2, a3, a4, a5, a6], [b1, b2, b3, b4], 3, 2, [a1, a2, a3, b1, b2, a4, a5, a6, b3, b4]). Yes ?– intercala([a1, a2, a3, a4, a5, a6], [b1, b2, b3, b4], 2, N, X). N = 2, X = [a1, a2, b1, b2, a3, a4, b3, b4, a5, a6] ; N = 1, X = [b1, a1, a2, b2, a3, a4, b3, a5, a6, b4] ; No ?– intercala([a1, a2, a3, a4], [b1, b2], N, 1, X). N = 2, X = [a1, a2, b1, a3, a4, b2] ; N = 2, X = [b1, a1, a2, b2, a3, a4] ; N = 4, X = [b1, a1, a2, a3, a4, b2] ; No -------- c(inicio,1). c(1,2). c(2,3). c(3,4). c(4,5). c(5,6). c(6,7). c(4,8). c(8,9). c(9,10). c(10,11). c(11,fin). c(A,B):-c(B,A). ruta([inicio,X|Zs]):-c(inicio,X),ruta([X|Zs]). ruta([X,Y|Zs]):-c(X,Y),ruta([Y|Zs]). ruta([X,fin]):-c(X,fin),!. -------------