Menu Close

Intercambio de componentes de un par

Definir la función

   intercambia :: (a,b) -> (b,a)

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

   intercambia (2,5)  ==  (5,2)
   intercambia (5,2)  ==  (2,5)

Soluciones

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


Soluciones en Haskell

intercambia :: (a,b) -> (b,a)
intercambia (x,y) = (y,x)

El código se encuentra en GitHub.


Soluciones en Python

from typing import TypeVar
from hypothesis import given, strategies as st
 
A = TypeVar('A')
B = TypeVar('B')
 
def intercambia(p: tuple[A, B]) -> tuple[B, A]:
    (x, y) = p
    return (y, x)
 
# La propiedad de es
@given(st.tuples(st.integers(), st.integers()))
def test_equiv_intercambia(p):
    assert intercambia(intercambia(p)) == p
 
# La comprobación es
#    src> poetry run pytest -q intercambio_de_componentes_de_un_par.py
#    1 passed in 0.15s

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.
Posted in Haskell y Python

Escribe tu solución

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.