31 lines
2.1 KiB
TeX
31 lines
2.1 KiB
TeX
|
\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}
|