Suponha que usemos as regras a seguir para extrair uma única string de outra, uma contendo apenas caracteres imprimíveis ASCII e chamada de *
-string. Se a sequência acabar antes que o processo pare, isso é um erro e o resultado do processo é indefinido nesse caso:
- Começar com
d=1, s=""
- Sempre que encontrar um
*
, multipliqued
por 2. Sempre que encontrar outro personagem, concatene-o até o finals
e subtraia 1 ded
. Se agorad=0
, pare e retornes
Exemplos definidos :
d->d
769->7
abcd56->a
*abcd56->ab
**abcd56->abcd
*7*690->769
***abcdefghij->abcdefgh
Exemplos indefinidos : (observe que a string vazia também seria uma dessas)
*7
**769
*7*
*a*b
*
Seu trabalho é pegar uma sequência e retornar a *
sequência mais curta que produz essa sequência.
Exemplos de programas :
7->7
a->a
ab->*ab
abcd->**abcd
769->*7*69
Seu programa deve manipular qualquer sequência que contenha pelo menos um caractere e apenas *
caracteres imprimíveis não ASCII. Você nunca pode retornar strings para as quais o processo é indefinido, pois, por definição, eles não podem produzir QUALQUER strings.
Aplicam-se brechas padrão e regras de E / S.
*
?