Universo y grafo de una relación binaria
Usando el tipo de las relaciones binarias, definir las funciones
1 2 |
universo :: Eq a => Rel a -> [a] grafo :: Eq a => ([a],[(a,a)]) -> [(a,a)] |
tales que
universo r
es el universo de la relaciónr
. Por ejemplo,
1 2 3 |
λ> r = R ([1, 3],[(3, 1), (3, 3)]) λ> universo r [1,3] |
grafo r
es el grafo de la relación r. Por ejemplo,
1 2 |
λ> grafo r [(3,1),(3,3)] |
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
1 2 3 4 5 6 7 |
import Relaciones_binarias universo :: Eq a => Rel a -> [a] universo (R (u,_)) = u grafo :: Eq a => Rel a -> [(a,a)] grafo (R (_,g)) = g |
1 2 3 4 5 6 7 8 9 10 11 |
from typing import TypeVar A = TypeVar('A') Rel = tuple[list[A], list[tuple[A, A]]] def universo(r: Rel[A]) -> list[A]: return r[0] def grafo(r: Rel[A]) -> list[tuple[A, A]]: return r[1] |