Prolog - Ejercicios de Prolog ayuda

 
Vista:

Ejercicios de Prolog ayuda

Publicado por pedro (1 intervención) el 03/05/2013 12:41:43
Hola Gente necesito ayuda con estos ejercicios que no consigo hacerlos. Un saludo

4. eliminar_repetidos(L1,L2): cierto si L2 es una lista que contiene todos los elementos de L1, pero sin repeticiones y respetando el orden de su primera aparición en L1.
?- eliminar_repetidos([1,2,3],L).
L = [1, 2, 3] ;
No
?- eliminar_repetidos([],L).
L = [] ;
No
?- eliminar_repetidos([1,2,2,3,3,4,a,a,3,3],L).
L = [1, 2, 3, 4, a] ;
No
5. combinacion(L,LC): cierto si LC es una combinación de los elementos de L. Este predicado debe devolver por backtraking todas las combinaciones de los elementos de L
?- combinacion([],L).
L = [] ;
No
?- combinacion([1,2,3],L).
L = [1, 2, 3] ;
L = [2, 1, 3] ;
L = [2, 3, 1] ;
L = [1, 3, 2] ;
L = [3, 1, 2] ;
L = [3, 2, 1] ;
No

6. todas_alternadas(L,LLA): cierto si LLA es una lista que contiene todas las listas alternadas que se pueden formar con los elementos de L (considerando que L es una lista de números enteros distintos entre si). Para realizar este predicado, implementar antes el siguiente:

alternar(L,LA): cierto si dada L, una lista de números enteros distintos entre si, LA es una lista alternada que se puede formar con los elementos de L. Una lista es alternada si cada elemento está entre dos que son mayores que él, o entre dos que son menores que él. Si L es una lista de dos elementos, cualquier combinación de ellos se considera una lista alternada. Este predicado debe devolver por backtraking todas las listas alternadas que se pueden formar a partir de L.

?- todas_alternadas([3,1,2],L).
L = [[3, 1, 2], [1, 3, 2], [2, 3, 1], [2, 1, 3]] ;
No

?- alternar([],L).
L = [] ;
No
?- alternar([1,2],L).
L = [1, 2] ;
L = [2, 1] ;
No
?- alternar([3,2,1],L).
L = [2, 3, 1] ;
L = [2, 1, 3] ;
L = [3, 1, 2] ;
L = [1, 3, 2] ;
No


7. filtrar_secuencias(N,L1,L2): cierto si L2 es la lista que contiene los elementos de L1 que pertenecen a las secuencias de al menos N elementos iguales consecutivos.
?- filtrar_secuencias(3,[a,b,b,b,c,a,a,a,b,b,b,b,c,c,d],L).
L = [b,b,b,a,a,a,b,b,b,b] ;
No
?- filtrar_secuencias(4,[a,b,b,b,c,a,a,a],L).
L = [] ;
No
?- filtrar_secuencias(2,[],L).
L = [] ;
No


8. insertar(L1,P,L2): cierto si L1 es una lista de pares, donde el primer elemento de cada par es un número (valor de la abscisa) y el segundo es una lista de números (ordenadas asociadas al valor de la abscisa) (por ejemplo, [(1,[2,3]), (2,[4,3])]), P es un par de dos números, el primero el valor de una abscisa y el segundo el de una ordenada (por ejemplo, (2,1)) y L2 es la lista L1 con la nueva incorporación de la ordenada de P a la lista de ordenadas asociada en L1 a la abscisa de P, si es que ya existía la abscisa, (en el ejemplo anterior: [(1,[2,3]), (2,[4,3,1])]), y de no existir la abscisa, L2 es la lista L1 con el nuevo par que indica P al final.
?- insertar([(1,[2,3]), (2,[4,3])],(2,1),L).
L =[(1,[2,3]), (2,[4,3,1])] ;
No
?- insertar([(1,[2,3]), (4,[4,3])],(3,1),L).
L =[(1,[2,3]), (4,[4,3]), (3,[1])] ;
No

9. agrupar_coordenadas(L1,L2): cierto si L1 es una lista de pares de abscisa-ordenada y L2 es una lista de pares, donde el primer elemento de cada par es una abscisa y el segundo elemento es la lista de ordenadas que aparecen en L1 asociadas a esa abscisa, ordenadas de menor a mayor.
?-agrupar_coordenadas([(3,2),(2,3),(3,4),(3,3)], [(3,[2,3,4],(2,[3])])
Yes

10. filtrar(L1, L2, Prop, L3): cierto si L3 es la lista con los elementos de L1 (en el mismo orden), que cumplen a la vez las siguientes condiciones:
a) La propiedad Prop
b) Su posición en la lista L1 viene indicada por alguno de los elementos de la lista L2.
La propiedad se especificará mediante el nombre de un predicado de aridad 1.
Ejemplo: si tenemos un predicado par(X) que es cierto si X es un número par, entonces:
?-filtrar([1,3,5,2,7,3,2,8],[2],par,L).
L = []
?-filtrar([1,3,5,2,7,3,2,8],[4],par,L).
L = [2]
?-filtrar([1,3,5,2,7,3,2,8],[1,4],par,L).
L = [2]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder