Number letter counts#
package main
import (
"fmt"
"strings"
)
func spelling(number int) string {
under20 := []string{"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve",
"thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"}
tens := []string{"twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"}
if number == 0 {
return ""
}
if number < 20 {
return under20[number-1]
}
if number < 100 {
return tens[number/10-2] + " " + spelling(number%10)
}
if number < 1000 {
if number%100 == 0 {
return under20[number/100-1] + " hundred "
}
return under20[number/100-1] + " hundred and " + spelling(number%100)
}
if number == 1000 {
return under20[number/1000-1] + " thousand"
}
return ""
}
func letterCounts(limit int) int {
total := 0
for i := 1; i <= limit; i++ {
str := spelling(i)
total += len(strings.ReplaceAll(str, " ", ""))
}
return total
}
func main() {
fmt.Println(letterCounts(1000))
}
OUTPUT
21124