Головоломка MU - головоломка , в которой вы узнаете, можно ли включить MIв MUданных следующих операций:
Если ваша строка заканчивается
I, вы можете добавитьUв конец. (напримерMI -> MIU)Если ваша строка начинается с
M, вы можете добавить копию части послеMстроки.
(напримерMII -> MIIII)Если ваша строка содержит три последовательных
I, вы можете изменить их наU.
(напримерMIII -> MU)Если ваша строка содержит два последовательных
U, вы можете удалить их. (напримерMUUU -> MU).
Ваша задача - создать программу, которая определяет, выполнимо ли это для любых начальных и конечных строк.
Ваша программа примет две строки в качестве входных данных. Каждая строка будет состоять из следующего:
один
M.строка до двадцати девяти
I«s иU» s.
Затем ваша программа вернет true(или представление вашего языка программирования / YPLRT), если вторая строка достижима из первой строки, и false(или YPLRT), если это не так.
Пример входов и выходов:
MI MII
true
MI MU
false
MIIIIU MI
true
Самый короткий код на любом языке для этого выигрывает.
MI- это именно то место, M(I|U)*где число Iне кратно 3. И такая прямая проверка, безусловно, способствует сокращению кода. Кроме того, я не знаю априорной оценки длин строк, необходимых для промежуточных шагов, поэтому прямой поиск может быть просто непрактичным.
MIзаданной достижимой строки.
IMпоставлен или MUMMI?