word_freq.fsx en F#
Una tabla de frecuencias con Split, countBy y un orden de dos claves.
// Count word frequencies in a passage and chart the leaders.
let passage =
"the rain in maine falls mainly on the plain and "
+ "the rain stays on the plain"
// countBy tallies in one pass; a two-key sort ranks the result.
let ranked =
passage.Split ' '
|> Array.toList
|> List.countBy id
|> List.sortBy (fun (word, n) -> (-n, word))
printfn "%d distinct words" (List.length ranked)
printfn "word ct bar"
for word, n in ranked do
printfn "%-7s %2d %s" word n (String.replicate n "#")
Cómo funciona
countBy idcuenta las palabras en una sola pasada.- Ordenar por
(-n, word)clasifica con empates alfabéticos. String.replicate n "#"dibuja cada barra.
Palabras clave y builtins usados aquí
doforfuninlet
El intento, en números
- Líneas
- 17
- Caracteres a escribir
- 490
- Tokens
- 86
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 79 segundos.
Paso 1 de 3 en Bis; paso 25 de 27 en Fundamentos del lenguaje.