typestar

word_freq.jl en Julia

Una tabla de frecuencias con split, un Dict de conteo y una clave doble.

# Count word frequencies in a passage and chart the leaders.

using Printf

passage = "the rain in maine falls mainly on the plain and " *
          "the rain stays on the plain"

# Tally every word; get with a default covers first sightings.
counts = Dict{String,Int}()
for word in split(passage)
    counts[word] = get(counts, word, 0) + 1
end

# Rank the entries, biggest first, ties broken by the word itself.
ranked = sort(collect(counts), by = p -> (-p.second, p.first))

println(length(ranked), " distinct words")
println("word    ct bar")
for (word, n) in ranked
    @printf("%-7s %2d %s\n", word, n, "#"^n)
end

Cómo funciona

  1. split parte el pasaje; get(counts, word, 0) + 1 cuenta.
  2. Ordenar por (-p.second, p.first) clasifica con empates alfabéticos.
  3. "#"^n dibuja la barra de cada palabra bajo columnas de @printf.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
21
Caracteres a escribir
601
Tokens
116
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 107 segundos.

Escribe este fragmento

Paso 1 de 3 en Bis; paso 25 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →