object ĠP ig Latin Ġ{ ĊĠĠĠ Ġ// ĠList Ġof Ġchar Ġsequence Ġthat Ġshould Ġbe Ġconsidered Ġa Ġsingle Ġcluster Ġof Ġv owel Ġ/ Ġcon son ant . ĊĠĠĠ Ġ// ĠLong er Ġelements Ġmust Ġappear Ġfirst . ĊĠĠĠ Ġprivate Ġval Ġclusters : ĠList < Pair < String , ĠBoolean >> Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" sch " Ġto Ġfalse , Ġ" thr " Ġto Ġfalse , ĊĠĠĠĠĠĠĠ Ġ" xr " Ġto Ġtrue , Ġ" yt " Ġto Ġtrue , ĊĠĠĠĠĠĠĠ Ġ" ch " Ġto Ġfalse , Ġ" qu " Ġto Ġfalse , Ġ" th " Ġto Ġfalse , Ġ" rh " Ġto Ġfalse , ĊĠĠĠĠĠĠĠ Ġ" a " Ġto Ġtrue , Ġ" e " Ġto Ġtrue , Ġ" i " Ġto Ġtrue , Ġ" o " Ġto Ġtrue , Ġ" u " Ġto Ġtrue , ĊĠĠĠĠĠĠĠ Ġ" y " Ġto Ġfalse ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠSplit Result ( ĊĠĠĠĠĠĠĠ Ġval Ġhead : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġhead Is V owel : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġtail : ĠString ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ// ĠSpl its Ġa Ġnon - empty Ġword Ġby Ġfirst Ġv owel Ġ/ Ġcon son ant Ġcluster . ĊĠĠĠ Ġ// ĠIN VARIANT : Ġhead Ġ+ Ġtail Ġ== Ġ< input Ġword >, Ġwhere Ġhead Ġand Ġtail Ġare Ġfrom ĠSplit Result . ĊĠĠĠ Ġprivate Ġfun Ġsplit First Cluster ( word : ĠString ): ĠSplit Result Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( prefix , Ġprefix Is V owel ) Ġin Ġclusters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( word . startsWith ( prefix )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSplit Result ( prefix , Ġprefix Is V owel , Ġword . substring ( prefix . length )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠSplit Result ( word . substring ( 0 , Ġ 1 ), Ġfalse , Ġword . substring ( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTrans lates Ġa Ġsingle Ġword Ġinto ĠP ig ĠLat in . ĠIt Ġis Ġassumed Ġthat Ġthe Ġword Ġis Ġnot Ġempty . ĊĠĠĠ Ġprivate Ġfun Ġtranslate Word ( word : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( head , Ġhead Is V owel , Ġtail ) Ġ= Ġsplit First Cluster ( word ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Is V owel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRule Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġword Ġ+ Ġ" ay " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail . startsWith (" y ") Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRule Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtail Ġ+ Ġhead Ġ+ Ġ" ay " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail . startsWith (" qu ") Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRule Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtail . substring ( 2 ) Ġ+ Ġhead Ġ+ Ġ" qu ay " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRule Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtail Ġ+ Ġhead Ġ+ Ġ" ay " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtranslate ( phrase : ĠString ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġphrase . split (" Ġ"). map (:: translate Word ). join ToString (" Ġ") Ċ } Ċ