exercism/go/atbash-cipher/atbash.go

37 lines
549 B
Go

package atbash
import "strings"
func Atbash(s string) string {
s = strings.ToLower(s)
var v []byte
var b, iter int
for i := range s {
sv := int(s[i])
switch {
case sv < 48:
continue
case sv >= 48 && sv <= 57:
b = sv
case sv < 109:
b = 110 + (109 - sv)
case sv == 109:
b = 110
case sv == 110:
b = 109
case sv > 110:
b = 109 - (sv - 110)
}
v = append(v, byte(b))
iter++
if iter == 5 {
v = append(v, ' ')
iter = 0
}
}
if iter == 0 {
return string(v)[:len(string(v))-1]
}
return string(v)
}