typestar

word_freq.cs en C#

El CLI de conteo de palabras en C#: un archivo en stream, un diccionario de conteos, un top diez.

// word_freq: cuenta palabras de un archivo e imprime las diez más comunes
if (args.Length != 1)
{
    Console.Error.WriteLine("usage: word_freq <file>");
    Environment.Exit(1);
}

var separators = new[] { ' ', '\t', '.', ',', ';', ':', '!', '?', '"' };
var counts = new Dictionary<string, int>();

foreach (var line in File.ReadLines(args[0]))
{
    var words = line.ToLower()
        .Split(separators, StringSplitOptions.RemoveEmptyEntries);
    foreach (var word in words)
    {
        counts[word] = counts.GetValueOrDefault(word) + 1;
    }
}

var report = counts.OrderByDescending(pair => pair.Value)
    .ThenBy(pair => pair.Key)
    .Take(10);

Console.WriteLine($"{counts.Count} distinct words");
foreach (var (word, count) in report)
{
    Console.WriteLine($"{count,5}  {word}");
}

Cómo funciona

  1. args trae la línea de comandos; el mal uso sale con código 1.
  2. File.ReadLines lee en stream; GetValueOrDefault deja el conteo en una línea.
  3. OrderByDescending(...).ThenBy(...).Take(10) da forma al reporte.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
29
Caracteres a escribir
744
Tokens
179
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 113 segundos.

Escribe este fragmento

Paso 1 de 2 en Bis; paso 28 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →