wordcount.go en Go
Un programa completo de frecuencias: leer stdin, contar, ordenar, imprimir.
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strings"
)
func main() {
counts := make(map[string]int)
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
for scanner.Scan() {
word := strings.ToLower(strings.Trim(scanner.Text(), ".,!?;:"))
if word != "" {
counts[word]++
}
}
words := make([]string, 0, len(counts))
for w := range counts {
words = append(words, w)
}
sort.Slice(words, func(i, j int) bool {
return counts[words[i]] > counts[words[j]]
})
for _, w := range words {
fmt.Printf("%6d %s\n", counts[w], w)
}
}
Palabras clave y builtins usados aquí
appendboolforfuncifintlenmakemaprangereturnstring
El intento, en números
- Líneas
- 31
- Caracteres a escribir
- 540
- Tokens
- 167
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 91 segundos.
Paso 1 de 1 en Bis; paso 19 de 19 en Interfaces y genéricos.