Supposons que nous utilisions les règles suivantes pour extraire une seule chaîne d'une autre chaîne, l'une contenant uniquement des caractères imprimables ASCII et appelée chaîne de caractères *
. Si la chaîne s'épuise avant l'arrêt du processus, c'est une erreur et le résultat du processus n'est pas défini dans ce cas:
- Commencer avec
d=1, s=""
- Chaque fois que vous rencontrez un
*
, multipliezd
par 2. Chaque fois que vous rencontrez un autre personnage, concaténez-le à la fins
et soustrayez 1 ded
. Si maintenantd=0
, arrêtez et revenezs
Exemples définis :
d->d
769->7
abcd56->a
*abcd56->ab
**abcd56->abcd
*7*690->769
***abcdefghij->abcdefgh
Exemples indéfinis : (notez que la chaîne vide serait également l'une d'entre elles)
*7
**769
*7*
*a*b
*
Votre travail consiste à prendre une chaîne et à renvoyer la chaîne la plus courte *
qui produit cette chaîne.
Exemples de programme :
7->7
a->a
ab->*ab
abcd->**abcd
769->*7*69
Votre programme doit gérer toute chaîne contenant au moins un caractère et uniquement des *
caractères imprimables non ASCII. Vous ne pouvez jamais renvoyer de chaînes pour lesquelles le processus n'est pas défini, car par définition, elles ne peuvent produire AUCUNE chaîne.
Les failles standard et les règles d'E / S s'appliquent.
*
?