Menu
Coddy logo textTech

Resumen - Almacenamiento clave-valor

Parte de la sección Fundamentos del Journey de GO de Coddy — lección 93 de 109.

challenge icon

Desafío

Fácil

¡Practiquemos el uso de mapas con un sencillo contador de palabras!

Tu tarea es implementar un programa que cuente cuántas veces aparece cada palabra en una lista de palabras.

Requisitos:

  1. Completa la función addWord() que añade una palabra al mapa contador
  2. Completa la función getCount() que devuelve el recuento de una palabra específica
  3. Completa la función removeWord() que elimina una palabra del contador

Este es un breve repaso de cómo usar mapas como almacenamiento de clave-valor.

Nota: La salida mostrará los recuentos de palabras en orden alfabético para mayor consistencia.

Pruébalo tú mismo

package main

import (
	"fmt"
	"sort"
)

// addWord agrega una palabra al mapa contador
func addWord(counter map[string]int, word string) {
	// Tu código aquí
}

// getCount devuelve el conteo para una palabra específica
func getCount(counter map[string]int, word string) int {
	// Tu código aquí
	return 0
}

// removeWord elimina una palabra del contador
// Devuelve true si la palabra fue encontrada y eliminada
func removeWord(counter map[string]int, word string) bool {
	// Tu código aquí
	return false
}

// printWordCounts imprime los conteos de palabras en orden alfabético
func printWordCounts(counter map[string]int) {
	// Obtener todas las claves (palabras) del mapa
	words := make([]string, 0, len(counter))
	for word := range counter {
		words = append(words, word)
	}
	
	// Ordenar las palabras alfabéticamente
	sort.Strings(words)
	
	// Imprimir cada palabra y su conteo en orden ordenado
	for _, word := range words {
		fmt.Printf("%s: %d\n", word, counter[word])
	}
}

func main() {
	// Inicializar el mapa contador de palabras
	wordCounter := make(map[string]int)
	
	// Agregar algunas palabras
	words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
	for _, word := range words {
		addWord(wordCounter, word)
	}
	
	// Imprimir los conteos de palabras
	fmt.Println("Word counts:")
	printWordCounts(wordCounter)
	
	// Obtener el conteo para palabras específicas
	fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
	fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
	
	// Eliminar una palabra
	removed := removeWord(wordCounter, "banana")
	fmt.Printf("\nRemoved 'banana': %v\n", removed)
	
	// Intentar eliminar una palabra inexistente
	removed = removeWord(wordCounter, "grape")
	fmt.Printf("Removed 'grape': %v\n", removed)
	
	// Imprimir los conteos finales de palabras
	fmt.Println("\nFinal word counts:")
	printWordCounts(wordCounter)
}

Todas las lecciones de Fundamentos