El rompecabezas MU es un rompecabezas en el que descubres si puedes convertirte MI
en MU
las siguientes operaciones:
Si su cadena termina en
I
, puede agregar unU
al final. (por ejemploMI -> MIU
)Si su cadena comienza con
M
, puede agregar una copia de la parte posteriorM
a 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
I
yU
s.
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.
MI
son exactamente M(I|U)*
donde el número de I
no 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.
MI
de una cadena alcanzable dada.
IM
se suministra o MUMMI
?