Menu
Coddy logo textTech

Podsumowanie — przechowywanie par klucz–wartość

Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 93 z 109.

challenge icon

Wyzwanie

Łatwy

Poćwiczmy używanie map na przykładzie prostego licznika słów!

Twoim zadaniem jest zaimplementowanie programu, który zlicza, ile razy każde słowo występuje na liście słów.

Wymagania:

  1. Uzupełnij funkcję addWord(), która dodaje słowo do mapy licznika
  2. Uzupełnij funkcję getCount(), która zwraca liczbę wystąpień konkretnego słowa
  3. Uzupełnij funkcję removeWord(), która usuwa słowo z licznika

To krótkie przypomnienie, jak używać map jako magazynu par klucz-wartość.

Uwaga: dane wyjściowe będą wyświetlać liczbę wystąpień słów w kolejności alfabetycznej, aby zachować spójność.

Spróbuj swoich sił

package main

import (
	"fmt"
	"sort"
)

// addWord dodaje słowo do mapy zliczającej słowa
func addWord(counter map[string]int, word string) {
	// Tu wpisz swój kod
}

// getCount zwraca liczbę wystąpień danego słowa
func getCount(counter map[string]int, word string) int {
	// Tu wpisz swój kod
	return 0
}

// removeWord usuwa słowo z mapy zliczającej słowa
// Zwraca true, jeśli słowo zostało znalezione i usunięte
func removeWord(counter map[string]int, word string) bool {
	// Tu wpisz swój kod
	return false
}

// printWordCounts wypisuje liczby wystąpień słów w kolejności alfabetycznej
func printWordCounts(counter map[string]int) {
	// Pobierz wszystkie klucze (słowa) z mapy
	words := make([]string, 0, len(counter))
	for word := range counter {
		words = append(words, word)
	}
	
	// Posortuj słowa alfabetycznie
	sort.Strings(words)
	
	// Wypisz każde słowo i liczbę jego wystąpień w kolejności sortowania
	for _, word := range words {
		fmt.Printf("%s: %d\n", word, counter[word])
	}
}

func main() {
	// Zainicjalizuj mapę zliczającą słowa
	wordCounter := make(map[string]int)
	
	// Dodaj kilka słów
	words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
	for _, word := range words {
		addWord(wordCounter, word)
	}
	
	// Wypisz liczby wystąpień słów
	fmt.Println("Word counts:")
	printWordCounts(wordCounter)
	
	// Pobierz liczby wystąpień wybranych słów
	fmt.Printf("\nCount for 'apple': %d\n", getCount(wordCounter, "apple"))
	fmt.Printf("Count for 'grape': %d\n", getCount(wordCounter, "grape"))
	
	// Usuń słowo
	removed := removeWord(wordCounter, "banana")
	fmt.Printf("\nRemoved 'banana': %v\n", removed)
	
	// Spróbuj usunąć nieistniejące słowo
	removed = removeWord(wordCounter, "grape")
	fmt.Printf("Removed 'grape': %v\n", removed)
	
	// Wyświetl końcowe liczby wystąpień słów
	fmt.Println("\nFinal word counts:")
	printWordCounts(wordCounter)
}

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Go online