-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGrafo_Numero_de_vertices.hs
46 lines (38 loc) · 1.36 KB
/
Grafo_Numero_de_vertices.hs
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
38
39
40
41
42
43
44
45
46
-- Grafo_Numero_de_vertices.hs
-- TAD de los grafos: Número de vértices.
-- José A. Alonso Jiménez <https://jaalonso.github.io>
-- Sevilla, 26-mayo-2023
-- ---------------------------------------------------------------------
-- ---------------------------------------------------------------------
-- Usando el [tipo abstracto de datos de los grafos](https://bit.ly/45cQ3Fo),
-- definir la función,
-- nVertices :: (Ix v, Num p) => Grafo v p -> Int
-- tal que (nVertices g) es el número de vértices del grafo g. Por
-- ejemplo,
-- nVertices (creaGrafo' D (1,5) [(1,2),(3,1)]) == 5
-- nVertices (creaGrafo' ND (0,5) [(1,2),(3,1)]) == 6
-- ---------------------------------------------------------------------
module Grafo_Numero_de_vertices where
import TAD.Grafo (Grafo, Orientacion (D, ND), nodos, creaGrafo')
import Data.Ix (Ix)
import Test.Hspec (Spec, hspec, it, shouldBe)
nVertices :: (Ix v, Num p) => Grafo v p -> Int
nVertices = length . nodos
-- Verificación
-- ============
verifica :: IO ()
verifica = hspec spec
spec :: Spec
spec = do
it "e1" $
nVertices (creaGrafo' D (1,5) [(1,2),(3,1)] :: Grafo Int Int) `shouldBe` 5
it "e2" $
nVertices (creaGrafo' ND (0,5) [(1,2),(3,1)] :: Grafo Int Int) `shouldBe` 6
-- La verificación es
-- λ> verifica
--
-- e1
-- e2
--
-- Finished in 0.0002 seconds
-- 2 examples, 0 failures