Practica lab lenguaje

Solo disponible en BuenasTareas
  • Páginas : 13 (3088 palabras )
  • Descarga(s) : 0
  • Publicado : 1 de mayo de 2011
Leer documento completo
Vista previa del texto
Ejercicio 1
Una subsecuencia monótona creciente es un subconjunto de números que son estrictamente crecientes desde la cabeza hacia la cola (en el caso de una lista). Esta definición no requiere que los números sean adyacentes en la lista. Por ejemplo, dada la siguiente lista:
(2 4 8 3 100 93 50 55 89 3 1)
las siguientes son subsecuencias crecientes:
(2 4 8 100) ; (2 4 8 50 55) ; (3 50 5589) ; etc.
Se le solicita que defina en Prolog un predicado subsec( Secuencia , Subsec ), el cual unifica si Subsec es una subsecuencia monótona creciente en Secuencia. Por ejemplo:
 subsec([2, 4, 8, 3, 100, 93, 50, 55, 89, 3, 1], [3, 50, 55]).
True
 subsec([2, 4, 8, 3, 100, 93, 50, 55, 89, 3, 1], [2, 4, 8, 100]).
True
 subsec([2, 4, 8, 3, 100, 93, 50, 55, 89, 3, 1], [3, 4, 8, 93]).
No subsec([2, 4, 8, 3, 100, 93, 50, 55, 89, 3, 1], S).
S = [2, 4, 8, 100] ; … etc.

Ejercicio 2
Realizar un predicado Prolog secuenciaFaltante( Lista1, Lista2 ), tal que para una lista dada (Lista1) que contiene una secuencia de números enteros ordenados ascendentemente, se obtenga en Lista2 una secuencia ascendente de los números faltantes en Lista 1. Los números faltantes que pertenecen aLista2 son aquellos que deberían encontrarse entre números consecutivos de Lista1 pero no se encuentran.
Por ejemplo:
 secuenciaFaltante( [1, 4, 6, 12], L2 ).
L2 = [2,3,5,7,8,9,10,11]
 secuenciaFaltante( [-2, 3, 6, 8], L2 ).
L2 = [-1, 0, 1, 2, 4, 5, 7]



Ejercicio 3
Se desea desarrollar un programa Prolog que permita intercalar los elementos de dos listas considerando tramos deintercalación de distintas longitudes:
intercala( L1, L2, LongTramoL1, LongTramoL2, Resultado )
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]

Nota: 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.

Ejercicio 4
Se le solicita que defina el predicado ocurrencias( Elemento, Lista, Posiciones )
El primer argumento, Elemento, puede aparecer una o másveces en el segundo argumento, Lista. El tercer argumento, Posiciones, es una lista de enteros que indican las posiciones en que ocurre Elemento en Lista.
La restricción que se impone es que no podrán utilizarse predicados con más de tres argumentos en la definición de ocurrencias, es decir: no utilizar predicados empleando argumentos contadores que siempre requieran ser evaluados con ese argumentocon un valor, pudiéndose evaluar con ese argumento como variable.
Ejemplos del empleo del predicado:
 ocurrencias( a, [s, 1, 3, a, a, 2, d, a], T ).
T = [ 4, 5, 8 ]
 ocurrencias( 2, [2, 1, 3, a, a, 2, d, a], [1, 6] ).
True
 ocurrencias( 4, [s, 1, 3, a, a, 2, d, a], T ).
T = []


Paradigmas de Programación
Programación Lógica / Grafos

Ejercicio 5
Dado el grafo dirigidorepresentado en la siguiente figura:

Una representación para el mismo en Prolog podría consistir en una lista que contenga dos sublistas: una representando el conjunto de nodos (o vértices) y otra representando el conjunto de arcos, donde cada arco es a su vez una lista de dos elementos, el nodo inicial y el final. Por ejemplo:

(A) [[a b c d e] [[a b] [b c] [b d] [c e] [d a] [d e] [e a]]]

Otrarepresentación válida consiste en una lista de listas, donde cada sublista contiene como elementos un nodo y una lista de los nodos hacia los cuales éste está conectado, por ejemplo:

(B) [[a [b]] [b [c d]] [c [e]] [d [a e]] [e [a]]]

Note que el elemento [d [a e]] representa la existencia de los arcos [d a] y [d e] en la representación anterior.

Una tercera representación, basada en la...
tracking img