typestar

wordcount.rs en Rust

Un programa completo de frecuencias: leer stdin, contar, ordenar, imprimir.

use std::collections::HashMap;
use std::io::{self, Read};

fn main() {
    let mut input = String::new();
    io::stdin()
        .read_to_string(&mut input)
        .expect("failed to read stdin");

    let mut counts: HashMap<String, usize> = HashMap::new();
    for raw in input.split_whitespace() {
        let word: String = raw
            .trim_matches(|c: char| c.is_ascii_punctuation())
            .to_lowercase();
        if !word.is_empty() {
            *counts.entry(word).or_insert(0) += 1;
        }
    }

    let mut pairs: Vec<_> = counts.into_iter().collect();
    pairs.sort_by(|a, b| b.1.cmp(&a.1));
    for (word, count) in pairs.into_iter().take(10) {
        println!("{count:6}  {word}");
    }
}

Palabras clave y builtins usados aquí

El intento, en números

Líneas
25
Caracteres a escribir
602
Tokens
198
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 108 segundos.

Escribe este fragmento

Paso 1 de 1 en Bis; paso 14 de 14 en Iteradores y closures.

← Anterior