Igualdad de conjuntos

Definir la función

tal que iguales xs ys se verifica si xs e ys son iguales como conjuntos. 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

Reconocimiento de subconjunto

Definir la función

tal que subconjunto xs ys se verifica si xs es un subconjunto de 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.

Comentarios

  • La expresión «x pertenece a ys» se escribe
    • en Haskell, como x `elem` ys
    • en Python, como x in ys
  • La expresión «todos los elementos de xs verifican la propiedad p» se escribe
    • en Haskell, como all p xs
    • en Python, como all(p(x) for x in xs)
  • Si xs e ys son conjuntos, la expresión «xs es subconjunto de ys» se escribe
    • en Haskell, como xs `isSubsetOf` ys
    • en Python, como xs <= ys

Números racionales

Los números racionales pueden representarse mediante pares de números enteros. Por ejemplo, el número 2/5 puede representarse mediante el par (2,5).

Definir las funciones

tales que

  • formaReducida x es la forma reducida del número racional x. Por ejemplo,

  • sumaRacional x y es la suma de los números racionales x e y, expresada en forma reducida. Por ejemplo,

  • productoRacional x y es el producto de los números racionales x e y, expresada en forma reducida. Por ejemplo,

  • igualdadRacional x y se verifica si los números racionales x e y son iguales. Por ejemplo,

Comprobar con QuickCheck la propiedad distributiva del producto racional respecto de la suma.

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.

Intersección de intervalos cerrados

Los intervalos cerrados se pueden representar mediante una lista de dos números (el primero es el extremo inferior del intervalo y el segundo el superior).

Definir la función

tal que (interseccion i1 i2) es la intersección de los intervalos i1 e i2. Por ejemplo,

Comprobar con QuickCheck que la intersección de intervalos es conmutativa.

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.

Fórmula de Herón para el área de un triángulo

La fórmula de Herón, descubierta por Herón de Alejandría, dice que el área de un triángulo cuyo lados miden a, b y c es la raíz cuadrada de s(s-a)(s-b)(s-c) donde s es el semiperímetro

Definir la función

tal que (area a b c) es el área del triángulo de lados a, b y c. 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.