// 11. hét – Gyakoriság számlálás a beépített map-pel (hash tábla)
// Futtatás: go run ./h11/wordcount
package main

import (
	"fmt"
	"maps"
	"slices"
	"strings"
)

func main() {
	text := "the quick brown fox jumps over the lazy dog the fox runs and the dog sleeps"
	freq := map[string]int{}
	for _, w := range strings.Fields(text) {
		freq[w]++ // a hiányzó kulcs értéke 0 (nulla érték)
	}
	fmt.Println("gyakoriságok:", freq) // a fmt rendezve írja ki a map kulcsait

	// Top 3: a kulcsok rendezése gyakoriság szerint
	keys := slices.Collect(maps.Keys(freq))
	slices.SortFunc(keys, func(a, b string) int {
		if freq[a] != freq[b] {
			return freq[b] - freq[a]
		}
		return strings.Compare(a, b)
	})
	fmt.Print("top 3: ")
	for _, k := range keys[:3] {
		fmt.Printf("%s=%d ", k, freq[k])
	}
	fmt.Println()

	v, ok := freq["cat"] // "comma ok": megkülönbözteti a hiányzó kulcsot a 0 értéktől
	fmt.Println(`freq["cat"] =`, v, ", benne van?", ok)
	delete(freq, "the")
	fmt.Println(`delete után len =`, len(freq))
}
