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.