typestar

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í

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.

Escribe este fragmento

Paso 1 de 1 en Bis; paso 19 de 19 en Interfaces y genéricos.

← Anterior