El rompecabezas MU es un rompecabezas en el que descubres si puedes convertirte MIen MUlas siguientes operaciones:
Si su cadena termina en
I, puede agregar unUal final. (por ejemploMI -> MIU)Si su cadena comienza con
M, puede agregar una copia de la parte posteriorMa la cadena.
(por ejemploMII -> MIIII)Si su cadena contiene tres
I' consecutivos , puede cambiarlos a aU.
(por ejemploMIII -> MU)Si su cadena contiene dos
U' consecutivos , puede eliminarlos. (por ejemploMUUU -> MU)
Su tarea es crear un programa que determine si esto es factible para cualquier cadena de inicio y finalización.
Su programa tomará dos cadenas como entrada. Cada cadena constará de lo siguiente:
uno
M.una cadena de hasta veintinueve
IyUs.
Su programa luego regresará true(o la representación del mismo en su lenguaje de programación / YPLRT) si la segunda cadena es accesible desde la primera cadena, y false(o YPLRT) si no lo es.
Ejemplo de entradas y salidas:
MI MII
true
MI MU
false
MIIIIU MI
true
El código más corto en cualquier idioma para hacer esto gana.
MIson exactamente M(I|U)*donde el número de Ino es múltiplo de 3. Y una verificación tan directa seguramente genera un código más corto. Además, no conozco un límite a priori en la longitud de las cadenas requeridas para los pasos intermedios, por lo que la búsqueda directa podría ser simplemente poco práctica.
MIde una cadena alcanzable dada.
IMse suministra o MUMMI?