Головоломка MU - головоломка , в якій ви дізнаєтеся, чи можна включити MIв MUданих наступних операцій:
Якщо ваш рядок закінчується
I, ви можете додати йогоUдо кінця. (наприкладMI -> MIU)Якщо ваш рядок починається з
M, ви можете додати копію частини після цьогоMдо рядка.
(наприкладMII -> MIIII)Якщо ваша рядок містить три послідовних
I, ви можете змінити їх наU.
(наприкладMIII -> MU)Якщо ваша рядок містить два послідовних
U, ви можете їх видалити. (наприкладMUUU -> MU).
Ваше завдання - створити програму, яка визначає, чи це можливо для будь-яких рядків початку та закінчення.
Ваша програма буде вводити два рядки як вхідні дані. Кожна рядок складається з наступного:
один
M.рядок до двадцяти дев'яти
IіUз.
Потім ваша програма поверне true(або представлення вашої мови програмування / YPLRT), якщо другий рядок буде доступний з першої струни, і false(або YPLRT), якщо він не є.
Приклади входів і виходів:
MI MII
true
MI MU
false
MIIIIU MI
true
Найкоротший код будь-якої мови для цього виграє.
MIце саме те, M(I|U)*де кількість Iне кратна 3. І така пряма перевірка, безумовно, передбачає коротший код. Крім того, я не знаю апріорі, обмеженого довжинами рядків, необхідних для проміжних кроків, тому прямий пошук може бути просто недоцільним.
MIзаданої рядки, що доступна.
IMвін подається або MUMMI?