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
xsse calcula- en Haskell, con
init xsy - en Python, con
xs[:-1].
- en Haskell, con