Головоломка 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
?