Le puzzle MU est un puzzle dans lequel vous découvrez si vous pouvez vous transformer MIen 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
IetU.
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.
MIsont exactement ceux M(I|U)*où le nombre de In'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.
MId'une chaîne accessible donnée.
IMest fournie ou MUMMI?