Tus padres los han desafiado a ti y a tu hermano a un partido de baloncesto dos contra dos. Confiados en que van a ganar, los dejan anotar los primeros puntos, pero después empiezan a tomar el control del partido. Como necesitan un pequeño empujón, empiezan a hablar en Pig Latin, un idioma inventado de niños que es difícil de entender para quienes ya no son niños. ¡Eso les dará la ventaja que necesitan para imponerse a sus padres!
Tu tarea es traducir texto del inglés al Pig Latin. La traducción se define con cuatro reglas, que se fijan en el patrón de vocales y consonantes al principio de una palabra. Estas reglas se fijan en el uso de vocales y consonantes en cada palabra:
a, e, i, o y u
Si una palabra empieza con una vocal, o comienza con "xr" o "yt", agrega un sonido "ay" al final de la palabra.
Por ejemplo:
"apple" -> "appleay" (empieza con una vocal)"xray" -> "xrayay" (empieza con "xr")"yttria" -> "yttriaay" (empieza con "yt")Si una palabra empieza con una o más consonantes, primero mueve esas consonantes al final de la palabra y luego agrega un sonido "ay" al final de la palabra.
Por ejemplo:
"pig" -> "igp" -> "igpay" (empieza con una sola consonante)"chair" -> "airch" -> "airchay" (empieza con varias consonantes)"thrush" -> "ushthr" -> "ushthray" (empieza con varias consonantes)Si una palabra empieza con cero o más consonantes seguidas de "qu", primero mueve esas consonantes (si las hay) y la parte "qu" al final de la palabra, y luego agrega un sonido "ay" al final de la palabra.
Por ejemplo:
"quick" -> "ickqu" -> "ickquay" (empieza con "qu", sin consonantes precedentes)"square" -> "aresqu" -> "aresquay" (empieza con una consonante seguida de "qu")Si una palabra empieza con una o más consonantes seguidas de "y", primero mueve las consonantes que preceden a la "y" al final de la palabra, y luego agrega un sonido "ay" al final de la palabra.
Algunos ejemplos:
"my" -> "ym" -> "ymay" (empieza con una sola consonante seguida de "y")"rhythm" -> "ythmrh" -> "ythmrhay" (empieza con varias consonantes seguidas de "y")Los bytes 64-319 de la memoria lineal están reservados para el string de entrada.
El string de entrada se puede modificar en el mismo lugar si lo deseas.
Regístrate en Exercism para aprender y dominar WebAssembly con 87 ejercicios y mentoría humana real, todo gratis.
Echamos un vistazo a la coincidencia de patrones y a las expresiones regulares, además de una buena solución en Prolog, y nos preguntamos: ¿resolviste el ejercicio o solo lograste que pasaran las pruebas?