Interior de una lista
Definir la función
1 |
interior :: [a] -> [a] |
tal que (interior xs)
es la lista obtenida eliminando los extremos de la lista xs
. Por ejemplo,
1 2 |
interior [2,5,3,7,3] == [5,3,7] interior [2..7] == [3,4,5,6] |
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
1 2 |
interior :: [a] -> [a] interior xs = tail (init xs) |
El código se encuentra en GitHub.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from typing import TypeVar from hypothesis import given, strategies as st A = TypeVar('A') # 1ª solución def interior1(xs: list[A]) -> list[A]: return xs[1:][:-1] # 2ª solución def interior2(xs: list[A]) -> list[A]: return xs[1:-1] # La propiedad de equivalencia es @given(st.lists(st.integers())) def test_triangular(xs): assert interior1(xs) == interior2(xs) # La comprobación es # src> poetry run pytest -q interior_de_una_lista.py # 1 passed in 0.21s |
El código se encuentra en GitHub.
Comentarios
- Los elementos iniciales de una lista
xs
se calcula- en Haskell, con
init xs
y - en Python, con
xs[:-1]
.
- en Haskell, con