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

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

A continuación se muestran las soluciones.

1. Tres iguales

Definir la función

tal que (tresIguales x y z) se verifica si los elementos x, y y z son iguales. Por ejemplo,

Soluciones en Haskell

El código se encuentra en GitHub.

Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • La conjunción de x e y se calcula
    • en Haskell, con x && y y
    • en Python, con x and y.
  • En Python, x == y == z es equivalente a x == y and y == z.

2. Tres diferentes

Definir la función

tal que (tresDiferentes x y z) se verifica si los elementos x, y y z son distintos. Por ejemplo,

Soluciones en Haskell

El código se encuentra en GitHub.

Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • Para decidir si x e y son distintos, se escribe
    • x /= y en Haskell y
    • x != y en Python.

3. División segura

Definir la función

tal que (divisionSegura x y) es x/y si y no es cero y 9999 en caso contrario. Por ejemplo,

Soluciones en Haskell

El código se encuentra en GitHub.

Soluciones en Python

El código se encuentra en GitHub.

Comentarios

  • El condicional se escribe en Haskell como

y en Python como

  • Una alternativa al uso de los condicionales son los patrones que en Haskell se escribe en los argumentos de las ecuaciones y en Python con match cases.

4. Disyunción excluyente

La disyunción excluyente de dos fórmulas se verifica si una es verdadera y la otra es falsa. Su tabla de verdad es

Definir la función

tal que (xor x y) es la disyunción excluyente de 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.

Comentarios

  • La negación de x se escribe igual en Haskell y Python; not x

  • La disyunción de x e y se escribe

    • en Haskell, como x || y y
    • en Python, como x or y.

5. Mayor rectángulo

Las dimensiones de los rectángulos puede representarse por pares; por ejemplo, (5,3) representa a un rectángulo de base 5 y altura 3.

Definir la función

tal que (mayorRectangulo r1 r2) es el rectángulo de mayor área entre r1 y r2. Por ejemplo,

Soluciones en Haskell

El código se encuentra en GitHub.

Soluciones en Python

El código se encuentra en GitHub.