Solution: ROT13
examples/rot13/rot13.go
package main import ( "fmt" "strings" ) func main() { original := "abcdefghijklmnopqrstyvwxyz ABCQRS !?¡ñ" //original = "Hello World!" fmt.Println(len(original)) encrypted := rot13(original) decrypted := rot13(encrypted) fmt.Println(original) fmt.Println(encrypted) fmt.Println(decrypted) fmt.Println(original == decrypted) } func rot13(input string) string { result := make([]string, 0, len(input)) for _, chr := range input { if 'a' <= chr && chr <= 'z' { chr = ((chr - 'a' + 13) % 26) + 'a' } if 'A' <= chr && chr <= 'Z' { chr = ((chr - 'A' + 13) % 26) + 'A' } result = append(result, string(chr)) } output := strings.Join(result, "") return output }