Le puzzle MU est un puzzle dans lequel vous découvrez si vous pouvez vous transformer MI
en MU
étant donné les opérations suivantes:
Si votre chaîne se termine par
I
, vous pouvez ajouter unU
à la fin. (par exempleMI -> MIU
)Si votre chaîne commence par
M
, vous pouvez ajouter une copie de la partie suivanteM
à la chaîne.
(par exempleMII -> MIIII
)Si votre chaîne contient trois consécutifs
I
, vous pouvez les changer en aU
.
(par exempleMIII -> MU
)Si votre chaîne contient deux consécutifs
U
, vous pouvez les supprimer. (par exempleMUUU -> MU
).
Votre tâche consiste à créer un programme qui détermine si cela est possible pour les chaînes de début et de fin.
Votre programme prendra deux chaînes en entrée. Chaque chaîne comprendra les éléments suivants:
un
M
.une chaîne de jusqu'à vingt-neuf
I
etU
.
Votre programme retournera alors true
(ou la représentation de votre langage de programmation / YPLRT) si la deuxième chaîne est accessible à partir de la première chaîne, et false
(ou YPLRT) si ce n'est pas le cas.
Exemples d'entrées et sorties:
MI MII
true
MI MU
false
MIIIIU MI
true
Le code le plus court dans n'importe quelle langue pour ce faire gagne.
MI
sont exactement ceux M(I|U)*
où le nombre de I
n'est pas un multiple de 3. Et une telle vérification directe rend sûrement le code plus court. De plus, je ne connais pas de limite a-priori sur les longueurs de chaînes requises pour les étapes intermédiaires, donc la recherche directe peut être tout simplement impossible.
MI
d'une chaîne accessible donnée.
IM
est fournie ou MUMMI
?