MU zagadka jest logiczna, w której dowiesz się, czy można włączyć MIdo MUpodanych następujących operacji:
Jeśli twój łańcuch kończy się na
I, możesz dodać aUna końcu. (np.MI -> MIU)Jeśli ciąg zaczyna się od
M, możesz dołączyć kopię części poMnim.
(np.MII -> MIIII)Jeśli Twój ciąg zawiera trzy kolejne
I, możesz zmienić je naU.
(np.MIII -> MU)Jeśli Twój ciąg zawiera dwa kolejne
U, możesz je usunąć. (npMUUU -> MU.).
Twoim zadaniem jest zbudowanie programu, który określa, czy jest to wykonalne dla dowolnych ciągów początkowych i końcowych.
Twój program pobierze dwa ciągi jako dane wejściowe. Każdy ciąg składa się z następujących elementów:
jeden
M.ciąg do dwudziestu dziewięciu
IiUtych.
Twój program zwróci następnie true(lub jego reprezentację języka programowania / YPLRT), jeśli drugi łańcuch jest osiągalny z pierwszego łańcucha i false(lub YPLRT), jeśli nie jest.
Przykładowe dane wejściowe i wyjściowe:
MI MII
true
MI MU
false
MIIIIU MI
true
Wygrywa najkrótszy kod w dowolnym języku, aby to zrobić.
MIsą dokładnie tam, M(I|U)*gdzie liczba Inie jest wielokrotnością 3. A takie bezpośrednie sprawdzenie z pewnością skraca kod. Ponadto nie znam a priori związanego z długością łańcuchów wymaganych dla pośrednich kroków, więc bezpośrednie wyszukiwanie może być po prostu niepraktyczne.
MIdanego osiągalnego ciągu.
IMzostał dostarczony lub MUMMI?