summaryrefslogtreecommitdiff
path: root/go/pig-latin/pig_latin.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/pig-latin/pig_latin.go')
-rw-r--r--go/pig-latin/pig_latin.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/go/pig-latin/pig_latin.go b/go/pig-latin/pig_latin.go
new file mode 100644
index 0000000..295fac1
--- /dev/null
+++ b/go/pig-latin/pig_latin.go
@@ -0,0 +1,33 @@
+package igpay
+
+import "strings"
+
+func PigLatin(s string) string {
+ var ret []string
+ for _, v := range strings.Fields(s) {
+ if len(v) < 3 {
+ ret = append(ret, v)
+ continue
+ }
+ switch v[:3] {
+ case "squ", "sch", "thr":
+ ret = append(ret, v[3:]+v[:3]+"ay")
+ continue
+ }
+ switch v[:2] {
+ case "ch", "qu", "th", "sq":
+ ret = append(ret, v[2:]+v[:2]+"ay")
+ continue
+ case "ye", "xe":
+ ret = append(ret, v[1:]+v[:1]+"ay")
+ continue
+ }
+ switch v[:1] {
+ case "a", "e", "o", "u", "i", "y", "x":
+ ret = append(ret, s+"ay")
+ continue
+ }
+ ret = append(ret, v[1:]+v[:1]+"ay")
+ }
+ return strings.Join(ret, " ")
+}