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)
}
