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í
StringVeccharfnforifinletmutselfuseusize
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.
Paso 1 de 1 en Bis; paso 14 de 14 en Iteradores y closures.