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.
fuente

MIson exactamenteM(I|U)*donde el número deIno 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 oMUMMI?Respuestas:
SWI Prolog, 183 caracteres
¿Qué tal un Prolog, (ya que nadie ha respondido en 6 meses). Para correr, simplemente use "s (mi, mu)". El código divide los átomos en caracteres, luego busca la solución.
fuente
s(mi,miiii), y en general cualquier cosa que requiera más de una aplicación de la regla 2 para probar.