你的父母向你和你兄弟姊妹發起挑戰,要來一場二對二籃球賽。 他們自信滿滿,覺得自己一定會贏,於是先讓你們拿下幾分,接著才開始接管比賽。 為了提振士氣,你開始說起 Pig Latin,那是一種虛構的兒童語言,非兒童很難聽懂。 這下你就能佔上風,擊敗你的父母了!
你的任務是把英文翻譯成 Pig Latin。 這個翻譯由四條規則定義,這些規則會看單字開頭的母音與子音的模式。 這些規則會看每個單字如何使用母音和子音:
a、e、i、o 和 u
如果單字以母音開頭,或以 "xr" 或 "yt" 開頭,就在單字結尾加上 "ay" 的音。
例如:
"apple" -> "appleay"(以母音開頭)"xray" -> "xrayay"(以 "xr" 開頭)"yttria" -> "yttriaay"(以 "yt" 開頭)如果單字以一個或多個子音開頭,先把那些子音移到單字結尾,然後在單字結尾加上 "ay" 的音。
例如:
"pig" -> "igp" -> "igpay"(以單一子音開頭)"chair" -> "airch" -> "airchay"(以多個子音開頭)"thrush" -> "ushthr" -> "ushthray"(以多個子音開頭)如果單字以零個或多個子音後面接著 "qu" 開頭,先把那些子音(如果有的話)和 "qu" 部分移到單字結尾,然後在單字結尾加上 "ay" 的音。
例如:
"quick" -> "ickqu" -> "ickquay"(以 "qu" 開頭,前面沒有子音)"square" -> "aresqu" -> "aresquay"(以一個子音後面接著 "qu" 開頭)如果單字以一個或多個子音後面接著 "y" 開頭,先把 "y" 前面的子音移到單字結尾,然後在單字結尾加上 "ay" 的音。
來看幾個例子:
"my" -> "ym" -> "ymay"(以單一子音後面接著 "y" 開頭)"rhythm" -> "ythmrh" -> "ythmrhay"(以多個子音後面接著 "y" 開頭)我們會看看模式比對和正規表達式,以及一個漂亮的 Prolog 解法,並問問你:你是真的解出了這道練習,還是只讓測試通過而已?