-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBagClient.hs
More file actions
55 lines (42 loc) · 1.69 KB
/
BagClient.hs
File metadata and controls
55 lines (42 loc) · 1.69 KB
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
47
48
49
50
51
52
53
54
55
-------------------------------------------------------------------------------
-- Estructuras de Datos. 2º C. ETSI Informática. UMA
-- Práctica 3 - Uso del TAD Bag
--
-- Alumno: APELLIDOS, NOMBRE
--
-------------------------------------------------------------------------------
module BagClient where
import Data.Char(toLower)
import DataStructures.Bag.SortedLinearBag
-- convertir una lista en una bolsa
--
-- BagClient> list2Bag "abracadabra"
-- LinearBag { 'a' 'a' 'a' 'a' 'a' 'b' 'b' 'c' 'd' 'r' 'r' }
list2Bag:: Ord a => [a] -> Bag a
list2Bag = foldr insert empty
-------------------------------------------------------------------------------
-- Uso del TAD Bag a través del plegado
-------------------------------------------------------------------------------
-- El TAD Bag es casi inútil sin una función de plegado. El plegado es un
-- iterador que permite recorrer una bolsa sin conocer su implementación.
--------------------------------------------------------
-- EJERCICIO 5. COMPLETAR FUNCIONES CON FOLDBAG
--------------------------------------------------------
-- convertir una bolsa en una lista de pares (a,Int)
--
-- BagClient> bag2List (list2Bag "abracadabra")
-- [('a',5),('b',2),('c',1),('d',1),('r',2)]
bag2List :: Ord a => Bag a -> [(a, Int)]
bag2List = foldBag (\(e,d) oe s -> (Node e d s)) [] s
-- Determina si contiene una bolsa a un elemento
--
-- BagClient> contains 'b' (list2Bag "abracadabra")
-- True
contains :: Ord a => a -> Bag a -> Bool
contains x = undefined
-- número de veces que aparece el elemento que aparece más veces en una bolsa
--
-- ClienteBolsa> maxOcurrences (list2Bag "abracadabra")
-- 5
maxOcurrences :: Ord a => Bag a -> Int
maxOcurrences = undefined