SymbolCountOrd computes sorted symbol-frequency list of input message
(message string)
| 14 | |
| 15 | // SymbolCountOrd computes sorted symbol-frequency list of input message |
| 16 | func SymbolCountOrd(message string) []compression.SymbolFreq { |
| 17 | runeCount := make(map[rune]int) |
| 18 | for _, s := range message { |
| 19 | runeCount[s]++ |
| 20 | } |
| 21 | listfreq := make([]compression.SymbolFreq, len(runeCount)) |
| 22 | i := 0 |
| 23 | for s, n := range runeCount { |
| 24 | listfreq[i] = compression.SymbolFreq{Symbol: s, Freq: n} |
| 25 | i++ |
| 26 | } |
| 27 | sort.Slice(listfreq, func(i, j int) bool { return listfreq[i].Freq < listfreq[j].Freq }) |
| 28 | return listfreq |
| 29 | } |
| 30 | |
| 31 | func TestHuffman(t *testing.T) { |
| 32 | messages := []string{ |