O quebra - cabeça MU é um quebra-cabeça no qual você descobre se pode se transformar MInas MUseguintes operações:
Se sua string terminar
I, você poderá adicionarUa no final. (por exemploMI -> MIU)Se sua sequência começar
M, você poderá anexar uma cópia da peça depoisMà sequência.
(por exemploMII -> MIIII)Se a sua string contiver três consecutivas
I, você poderá alterá-las para aU.
(por exemploMIII -> MU)Se sua string contiver dois consecutivos
U, você poderá excluí-los. (por exemploMUUU -> MU).
Sua tarefa é criar um programa que determine se isso é possível para qualquer sequência de início e fim.
Seu programa terá duas seqüências de caracteres como entrada. Cada sequência consistirá no seguinte:
um
M.uma sequência de até vinte e nove
I'eU'.
Seu programa retornará true(ou a representação da sua linguagem de programação / YPLRT) se a segunda string estiver acessível a partir da primeira string e false(ou YPLRT) se não estiver.
Exemplos de entradas e saídas:
MI MII
true
MI MU
false
MIIIIU MI
true
O código mais curto em qualquer idioma para fazer isso vence.
MIsão exatamente M(I|U)*onde o número de Inão é um múltiplo de 3. E essa verificação direta certamente contribui para um código mais curto. Além disso, não conheço um limite a priori no comprimento das seqüências necessárias para etapas intermediárias, portanto, a pesquisa direta pode ser simplesmente impraticável.
MIde uma determinada sequência acessível.
IMfor fornecida ou MUMMI?