• 08/09/2024 12:36 AM

Ejercicios con Mapas

porJesus Flores

Ago 27, 2021

Como recordaremos en la entrada relacionada al trabajo con mapas se plantearon 4 ejercicios, en este post vamos a ver la solución propuesta a cada uno:

1.-Escribir una función que borre todos los elementos de un mapa

Se proponen 2 métodos para resolver este ejercicio, uno iterando los elementos y borrando cada elemento , y la segunda creando el mapa nuevamente con la función make.


package main
 
func main() {
	var spidermen= map[string]int{"toby": 2002, "andrew": 2016,
		"tom": 2020, "miles": 2021}
 
	// Forma 1. Recorremos todos los elementos
	for spiderman:= range spidermen{
		delete(spidermen, spiderman)
	}
 
	// Forma 2. creawndo un nuevo mapa dentro con la misma variable
	spidermen= make(map[string]int)
}

2.-Escribir una función que ordene las llaves de un mapa

Una manera de resolver este ejercicio es crear un slice que contenga las llaves del mapa, usamos la función sort para ordenar el slice y con esto tendremos los valores de nuestra llaves ordenados.


package main
 
import (
	"fmt"
	"sort"
)
 
func main() {
	clubes:= map[string]int{"Real Madrid": 550, "Barcelona": 510, "Atletico": 300}
 
	llaves := make([]string, 0, len(clubes))
 
	for llave:= range clubes{
		llaves = append(llaves , llave)
	}
	sort.Strings(llaves)
 
	for _, llave:= range llaves {
		fmt.Println(llave, clubes[llave])
	}
}

3.-Escribir una función que ordene los valores de un mapa

La lógica a utilizar es la misma con la diferencia que ahora vamos a ordenar los valores del mapa.

package main
 
import (
	"fmt"
	"sort"
)
func main() {
	clubes:= map[string]int{"Real Madrid": 550, "Barcelona": 510, "Atletico": 300}
 
        // creamos un slice de tipo entero para almacenar los valores
	valores:= make([]int, 0, len(clubes))
 
	for _, valor := range clubes{
		valores= append(valores, valor)
	}
 
 // Ordenamos el slice que contiene los valores.
	sort.Ints(valores)
 
 // por ultimo imprimimos el slice que contiene los valores ordenados.
	for _, valor := range valores{
		fmt.Println(valor)
	}
}

4.- Escribir una función que mezcle los elementos de dos mapas

La solución a este problema vamos a realizarla iterando los elementos del segundo mapa y sobreescribiendo los valores del primero.

package main
 
import "fmt"
 
func main() {
	primero := map[string]int{"madrid": 38, "barsa": 25, "atletico": 10}
	segundo := map[string]int{"madrid": 38, "valencia": 5, "atletico": 10, "bilbao": 14}
 
	for llave, valor := range segundo {
		primero[llave] = valor
	}
 
	fmt.Println(primero)
}

por Jesus Flores

Ingeniero de Software y Agile Coach

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *