En aquest tema, explorarem dues estructures de dades fonamentals en F#: els mapes (maps) i els conjunts (sets). Aquestes estructures són molt útils per a emmagatzemar i manipular col·leccions de dades de manera eficient.

Mapes

Un mapa és una col·lecció de parells clau-valor on cada clau és única. Els mapes són immutables per defecte en F#, el que significa que qualsevol operació que modifiqui un mapa retornarà un nou mapa en lloc de modificar l'original.

Creació de Mapes

let myMap = Map.ofList [ (1, "one"); (2, "two"); (3, "three") ]

Accés als Elements

let value = myMap.[2]  // "two"

Afegir i Eliminar Elements

let newMap = myMap.Add(4, "four")
let removedMap = newMap.Remove(1)

Iteració sobre un Mapa

myMap |> Map.iter (fun key value -> printfn "Key: %d, Value: %s" key value)

Exercici Pràctic: Treballant amb Mapes

Exercici:

  1. Crea un mapa que contingui els noms de tres ciutats i les seves poblacions.
  2. Afegeix una nova ciutat al mapa.
  3. Elimina una ciutat del mapa.
  4. Itera sobre el mapa i imprimeix cada ciutat i la seva població.

Solució:

let cityMap = Map.ofList [ ("Barcelona", 1620343); ("Madrid", 3223334); ("Valencia", 791413) ]
let updatedCityMap = cityMap.Add("Sevilla", 688711)
let finalCityMap = updatedCityMap.Remove("Madrid")

finalCityMap |> Map.iter (fun city population -> printfn "City: %s, Population: %d" city population)

Conjunts

Un conjunt és una col·lecció d'elements únics. Els conjunts també són immutables per defecte en F#.

Creació de Conjunts

let mySet = Set.ofList [1; 2; 3; 4; 5]

Afegir i Eliminar Elements

let newSet = mySet.Add(6)
let removedSet = newSet.Remove(1)

Operacions amb Conjunts

let setA = Set.ofList [1; 2; 3]
let setB = Set.ofList [3; 4; 5]

let unionSet = Set.union setA setB       // {1; 2; 3; 4; 5}
let intersectSet = Set.intersect setA setB  // {3}
let diffSet = Set.difference setA setB   // {1; 2}

Iteració sobre un Conjunt

mySet |> Set.iter (fun elem -> printfn "Element: %d" elem)

Exercici Pràctic: Treballant amb Conjunts

Exercici:

  1. Crea un conjunt de números de l'1 al 5.
  2. Afegeix el número 6 al conjunt.
  3. Elimina el número 1 del conjunt.
  4. Crea un altre conjunt de números del 4 al 8.
  5. Troba la unió, intersecció i diferència dels dos conjunts.

Solució:

let set1 = Set.ofList [1; 2; 3; 4; 5]
let updatedSet1 = set1.Add(6)
let finalSet1 = updatedSet1.Remove(1)

let set2 = Set.ofList [4; 5; 6; 7; 8]

let unionSet = Set.union finalSet1 set2
let intersectSet = Set.intersect finalSet1 set2
let diffSet = Set.difference finalSet1 set2

printfn "Union: %A" unionSet
printfn "Intersection: %A" intersectSet
printfn "Difference: %A" diffSet

Resum

En aquesta secció, hem après a treballar amb mapes i conjunts en F#. Hem vist com crear, accedir, afegir i eliminar elements en aquestes estructures de dades, així com realitzar operacions comunes com la unió, intersecció i diferència en conjunts. Aquests conceptes són fonamentals per a la manipulació eficient de col·leccions de dades en F#.

© Copyright 2024. Tots els drets reservats