PFH: La semana en Exercitium (9 de septiembre de 2022)

Esta semana he publicado en Exercitium las soluciones de los siguientes problemas:

A continuación se muestran las soluciones.

1. Intercambio de componentes de un par

Definir la función

tal que (intercambia p) es el punto obtenido intercambiando las coordenadas del punto p. Por ejemplo,

Soluciones en Haskell

El código se encuentra en GitHub.

Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • En Haskell se pone el patrón en los argumentos y en Python hay que extraerlos mediante un asignación.

2. Distancia entre dos puntos

Definir la función

tal que (distancia p1 p2) es la distancia entre los puntos p1 y p2. Por ejemplo,

Comprobar con QuickCheck que se verifica la propiedad triangular de la distancia; es decir, dados tres puntos p1, p2 y p3, la distancia de p1 a p3 es menor o igual que la suma de la distancia de p1 a p2 y la de p2 a p3.

Soluciones en Haskell

El código se encuentra en GitHub.

Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • La raíz cuadrada de x se escribe
    • en Haskell, como sqrt x y
    • en Python, como sqrt(x) y hay que importarla del módulo math.

3. Permutación cíclica

Definir la función

tal que (ciclo xs) es la lista obtenida permutando cíclicamente los elementos de la lista xs, pasando el último elemento al principio de la lista. Por ejemplo,

Comprobar que la longitud es un invariante de la función ciclo; es decir, la longitud de (ciclo xs) es la misma que la de xs.

Soluciones en Haskell

El código se encuentra en GitHub

Soluciones en Python

El código se encuentra en GitHub.

4. Mayor número con dos dígitos dados

Definir la función

tal que (numeroMayor x y) es el mayor número de dos cifras que puede construirse con los dígitos x e y. Por ejemplo,

Soluciones en Haskell

El código se encuentra en GitHub.

Soluciones en Python

El código se encuentra en GitHub.

5. Número de raíces de la ecuación de segundo grado

Definir la función

tal que (numeroDeRaices a b c) es el número de raíces reales de la ecuación ax^2 + bx + c = 0. Por ejemplo,

Soluciones en Haskell

El código se encuentra en GitHub.

Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • En Haskell se usa un entorno local con where d = b^2-4*a*c y en Python se usa la asignación d = b ** 2 - 4 * a * c.