Il puzzle MU è un puzzle in cui scopri se puoi trasformarti MI
in MU
le seguenti operazioni:
Se la stringa finisce
I
, puoi aggiungereU
a alla fine. (ad es.MI -> MIU
)Se la stringa inizia con
M
, è possibile aggiungere una copia della parte successivaM
alla stringa.
(ad es.MII -> MIIII
)Se la tua stringa contiene tre di seguito
I
, puoi cambiarli in aU
.
(ad es.MIII -> MU
)Se la tua stringa contiene due di seguito
U
, puoi eliminarli. (ad esMUUU -> MU
.).
Il tuo compito è costruire un programma che determini se ciò è fattibile per qualsiasi stringa di inizio e fine.
Il tuo programma prenderà due stringhe come input. Ogni stringa sarà composta da quanto segue:
uno
M
.una serie di fino a ventinove
I
's eU
' s.
Il programma quindi restituirà true
(o la sua rappresentazione del linguaggio di programmazione / YPLRT) se la seconda stringa è raggiungibile dalla prima stringa e false
(o YPLRT) se non lo è.
Ingressi e uscite di esempio:
MI MII
true
MI MU
false
MIIIIU MI
true
Il codice più corto in qualsiasi lingua per fare ciò vince.
MI
sono esattamente il punto in M(I|U)*
cui il numero di I
non è un multiplo di 3. E un tale controllo diretto rende sicuramente il codice più breve. Inoltre, non conosco un limite a priori legato alla lunghezza delle stringhe richieste per passaggi intermedi, quindi la ricerca diretta potrebbe essere semplicemente poco pratica.
MI
una determinata stringa raggiungibile.
IM
viene fornito o MUMMI
?