package atbash
import "strings"
const (
plain = "abcdefghijklmnopqrstuvwxyz123456789"
cipher = "zyxwvutsrqponmlkjihgfedcba123456789"
)
func Atbash(s string) string {
bs := make([]byte, 0, len(s))
kept := 0
s = strings.ToLower(s)
for _, b := range []byte(s) {
n := strings.IndexByte(plain, b)
if n == -1 {
continue
}
// This adds an unwanted space when kept == 0. Trim that off
// later rather than add a test if keep == 0 to every loop.
if kept%5 == 0 {
bs = append(bs, ' ')
}
bs = append(bs, cipher[n])
kept++
}
return strings.TrimPrefix(string(bs), " ")
}