diff --git a/p4/practica4.tex b/p4/practica4.tex new file mode 100644 index 0000000..c7b0154 --- /dev/null +++ b/p4/practica4.tex @@ -0,0 +1,31 @@ +\documentclass{article} + +\usepackage[utf8]{inputenc} +\usepackage[spanish]{babel} +\usepackage{listings} + +\title{Práctica 4 - Programación Lógica} +\author{Carlos S. Galindo Jiménez} + +\begin{document} +\maketitle + +Todos los ejercicios ejecutan la misma función: +\begin{lstlisting} +f(l) = if null?(l) then 0 else l + f(cdr(l)) +\end{lstlisting} +Esta función calcula la longitud de una lista, y su comportamiento específico variará en función de sus argumentos y la respuesta que esperemos. + +\begin{enumerate} + \item X $\rightarrow$ 0, puesto que el argumento es la lista vacía. + \item X $\rightarrow$ 2; el argumento es la lista [1, 2] expresada con el constructor de listas \texttt{cons}. + \item X $\rightarrow$ 2; puesto que es el mismo caso que el anterior pero con otro constructor. + \item X $\rightarrow$ 2; puesto que a pesar de contener variables enteras, su valor es irrelevante para la longitud de la lista. + \item VL $\rightarrow$ \{\texttt{nil}\}. Puesto que uno de los constraints es que el resultado sea 0, la única lista posible es la lista vacía, [ ] o \texttt{nil} + \item VL $\rightarrow$ \{[1,1,1,1]\}, asignando $'x_i$ a cada sublista, empezando con [ ] hasta que el resultado es \texttt{cons(1,'x1)}. + \item No encuentra solución. Esto se debe a que no existen suficientes variables intermedias $x_i$ para obtener la longitud 5 deseada. Añadiendo otra variable temporal más, o convirtiendo la variable lista en cola de una operación \texttt{cons} se puede obtener una lista de longitud 5. En esto consisten los siguientes ejercicios. + \item VL $\rightarrow$ \{[1,1,1,1]\}; de forma similar al ejemplo 6. Insertado en \texttt{cons(1,l)} obtendría una lista de longitud 5. + \item Igual que en el caso anterior, pero planteando la cabeza de la lista como una variable entera. Como ya se ha mencionado en el ejemplo 4. + \item No obtiene solución. De nuevo no hay suficientes variables intermedias para crear una cola de 5 elementos de tal modo que la lista sea de 6 elementos. Se plantea el mismo problema que en el ejercicio 7, con soluciones similares. +\end{enumerate} +\end{document} \ No newline at end of file