Załóżmy, że stosujemy następujące reguły, aby wyciągnąć pojedynczy ciąg z innego ciągu, który zawiera tylko znaki drukowalne ASCII i nazywany jest *ciągiem. Jeśli ciąg skończy się, zanim proces się zatrzyma, jest to błąd, a wynik procesu jest niezdefiniowany w takim przypadku:
- Zacząć od
d=1, s="" - Ilekroć napotkasz znak
*, pomnóżdprzez 2. Ilekroć spotkasz inną postać, połącz ją do końcasi odejmij 1 odd. Jeśli terazd=0, zatrzymaj się i wróćs
Zdefiniowane przykłady :
d->d
769->7
abcd56->a
*abcd56->ab
**abcd56->abcd
*7*690->769
***abcdefghij->abcdefgh
Niezdefiniowane przykłady : (zauważ, że pusty ciąg również będzie jednym z nich)
*7
**769
*7*
*a*b
*
Twoim zadaniem jest pobranie łańcucha i zwrócenie najkrótszego ciągu, *który go tworzy.
Przykłady programów :
7->7
a->a
ab->*ab
abcd->**abcd
769->*7*69
Twój program powinien obsługiwać dowolny ciąg znaków zawierający co najmniej jeden znak i tylko *znaki drukowalne inne niż ASCII. Nigdy nie możesz zwrócić łańcuchów, dla których proces jest niezdefiniowany, ponieważ z definicji nie mogą tworzyć ŻADNYCH łańcuchów.
Obowiązują standardowe luki i reguły we / wy.
*?