// https://repl.it/@sdrew/FogCreek-Application-Problem-Go // Run with command: go run ./go.go package main import ( "fmt" "io/ioutil" "sort" "strings" ) type MapSort struct { Key string Value int } func main() { data, err := ioutil.ReadFile("./data.txt") if err != nil { panic(err) } alphabet := "abcdefghijklmnopqrstuvwkyz_" dict := make(map[string]int) for _, char := range strings.Split(alphabet, "") { dict[char] = 0 } for _, char := range data { strChar := string(char) dict[strChar] = dict[strChar] + 1 } sorted := make([]MapSort, 0) for key, val := range dict { sorted = append(sorted, MapSort{key, val}) } sort.Slice(sorted, func(a, b int) bool { return sorted[a].Value > sorted[b].Value }) word := "" for _, val := range sorted { char := val.Key if char == "_" { break } word = strings.Join([]string{word, char}, "") } fmt.Println("Word:", word) }