-
Notifications
You must be signed in to change notification settings - Fork 1
/
interior_de_una_lista.py
37 lines (29 loc) · 1.05 KB
/
interior_de_una_lista.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# interior_de_una_lista.py
# Interior de una lista
# José A. Alonso Jiménez <https://jaalonso.github.io>
# Sevilla, 22-agosto-2022
# ---------------------------------------------------------------------
# ---------------------------------------------------------------------
# Definir la función
# interior : (list[A]) -> list[A]
# tal que interior(xs) es la lista obtenida eliminando los extremos de
# la lista xs. Por ejemplo,
# interior([2, 5, 3, 7, 3]) == [5, 3, 7]
# ---------------------------------------------------------------------
from typing import TypeVar
from hypothesis import given
from hypothesis import 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_interior(xs: list[int]) -> None:
assert interior1(xs) == interior2(xs)
# La comprobación es
# src> poetry run pytest -q interior_de_una_lista.py
# 1 passed in 0.21s