Base de datos de actividades

Las bases de datos sobre actividades de personas pueden representarse mediante listas de elementos de la forma (a,b,c,d), donde a es el nombre de la persona, b su actividad, c su fecha de nacimiento y d la de su fallecimiento. Un ejemplo es la siguiente que usaremos a lo largo de este ejercicio,

Definir las funciones

tales que

  • nombres bd es la lista de los nombres de las personas de la base de datos bd. Por ejemplo,

  • musicos bd es la lista de los nombres de los músicos de la base de datos bd. Por ejemplo,

  • seleccion bd m es la lista de los nombres de las personas de la base de datos bd cuya actividad es m. Por ejemplo,

  • musicos' bd es la lista de los nombres de los músicos de la base de datos bd. Por ejemplo,

  • vivas bd a es la lista de los nombres de las personas de la base de datos bd que estaban vivas en el año a. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell

El código se encuentra en GitHub.


Soluciones en Python

El código se encuentra en GitHub.

Representación densa de polinomios

Los polinomios pueden representarse de forma dispersa o densa. Por ejemplo, el polinomio 6x^4-5x^2+4x-7 se puede representar de forma dispersa por [6,0,-5,4,-7] y de forma densa por [(4,6),(2,-5),(1,4),(0,-7)].

Definir la función

tal que densa xs es la representación densa del polinomio cuya representación dispersa es xs. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell

El código se encuentra en GitHub.


Soluciones en Python

El código se encuentra en GitHub

Suma de elementos consecutivos

Definir la función

tal que sumaConsecutivos xs es la suma de los pares de elementos consecutivos de la lista xs. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell

El código se encuentra en GitHub.


Soluciones en Python

El código se encuentra en GitHub.

Producto escalar

El producto escalar de dos listas de enteros xs y ys de longitud n viene dado por la suma de los productos de los elementos correspondientes.

Definir la función

tal que productoEscalar xs ys es el producto escalar de las listas xs e ys. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell

El código se encuentra en GitHub.


Soluciones en Python

El código se encuentra en GitHub.

Ternas pitagóricas con suma dada

Una terna pitagórica es una terna de números naturales (a,b,c) tal que a<b<c y a²+b²=c². Por ejemplo (3,4,5) es una terna pitagórica.

Definir la función

tal que ternasPitagoricas x es la lista de las ternas pitagóricas cuya suma es x. Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell

El código se encuentra en GitHub.


Soluciones en Python

El código se encuentra en GitHub.