Sha256: 252cd3cc81c9b31f8ad6d30325ac103ffb3b0f5f34ff8444b1a5629386ece815

Contents?: true

Size: 1.04 KB

Versions: 122

Compression:

Stored size: 1.04 KB

Contents

package say

var small = []string{"zero", "one", "two", "three", "four", "five", "six",
	"seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen",
	"fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"}
var tens = []string{"ones", "ten", "twenty", "thirty", "forty",
	"fifty", "sixty", "seventy", "eighty", "ninety"}
var scale = []string{"thousand", "million", "billion",
	"trillion", "quadrillion", "quintillion"}

func Say(n int64) (value string, ok bool) {
	if n < 0 || n > 999999999999 {
		return
	}
	return say(n), true
}

func say(n int64) string {
	switch {
	case n < 20:
		return small[n]
	case n < 100:
		t := tens[n/10]
		s := n % 10
		if s > 0 {
			t += "-" + small[s]
		}
		return t
	case n < 1000:
		h := small[n/100] + " hundred"
		s := n % 100
		if s > 0 {
			h += " " + say(s)
		}
		return h
	}
	sx := ""

	if p := n % 1000; p > 0 {
		sx = say(p)
	}
	for i := 0; n >= 1000; i++ {
		n /= 1000
		if p := n % 1000; p > 0 {
			ix := say(p) + " " + scale[i]
			if sx > "" {
				ix += " " + sx
			}
			sx = ix
		}
	}
	return sx
}

Version data entries

122 entries across 122 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/go/exercises/say/example.go
trackler-2.2.1.179 tracks/go/exercises/say/example.go
trackler-2.2.1.178 tracks/go/exercises/say/example.go
trackler-2.2.1.177 tracks/go/exercises/say/example.go
trackler-2.2.1.176 tracks/go/exercises/say/example.go
trackler-2.2.1.175 tracks/go/exercises/say/example.go
trackler-2.2.1.174 tracks/go/exercises/say/example.go
trackler-2.2.1.173 tracks/go/exercises/say/example.go
trackler-2.2.1.172 tracks/go/exercises/say/example.go
trackler-2.2.1.171 tracks/go/exercises/say/example.go
trackler-2.2.1.170 tracks/go/exercises/say/example.go
trackler-2.2.1.169 tracks/go/exercises/say/example.go
trackler-2.2.1.167 tracks/go/exercises/say/example.go
trackler-2.2.1.166 tracks/go/exercises/say/example.go
trackler-2.2.1.165 tracks/go/exercises/say/example.go
trackler-2.2.1.164 tracks/go/exercises/say/example.go
trackler-2.2.1.163 tracks/go/exercises/say/example.go
trackler-2.2.1.162 tracks/go/exercises/say/example.go
trackler-2.2.1.161 tracks/go/exercises/say/example.go
trackler-2.2.1.160 tracks/go/exercises/say/example.go