RosettaCodeData/Task/Word-frequency/Wren/word-frequency.wren
2024-03-06 22:25:12 -08:00

28 lines
852 B
Text

import "io" for File
import "./str" for Str
import "./sort" for Sort
import "./fmt" for Fmt
import "./pattern" for Pattern
var fileName = "135-0.txt"
var text = File.read(fileName).trimEnd()
var groups = {}
// match runs of A-z, a-z, 0-9 and any non-ASCII letters with code-points < 256
var p = Pattern.new("+1&w")
var lines = text.split("\n")
for (line in lines) {
var ms = p.findAll(line)
for (m in ms) {
var t = Str.lower(m.text)
groups[t] = groups.containsKey(t) ? groups[t] + 1 : 1
}
}
var keyVals = groups.toList
Sort.quick(keyVals, 0, keyVals.count - 1) { |i, j| (j.value - i.value).sign }
System.print("Rank Word Frequency")
System.print("==== ==== =========")
for (rank in 1..10) {
var word = keyVals[rank-1].key
var freq = keyVals[rank-1].value
Fmt.print("$2d $-4s $5d", rank, word, freq)
}