Припустимо, ми використовуємо наступні правила для витягання однієї рядка з іншої рядка, яка містить лише символи для друку ASCII і називається- *string. Якщо рядок закінчується до того, як процес зупиниться, це помилка, і результат процесу не визначений у такому випадку:
- Починати з
d=1, s="" - Щоразу, коли ви стикаєтесь з a
*, помножтеdна 2. Щоразу, коли ви зустрінете іншого символу, з'єднайте його в кінецьsі відніміть 1 зd. Якщо заразd=0, зупиніть і повернітьсяs
Визначені приклади :
d->d
769->7
abcd56->a
*abcd56->ab
**abcd56->abcd
*7*690->769
***abcdefghij->abcdefgh
Не визначені приклади : (зауважте, що порожній рядок також буде одним із таких)
*7
**769
*7*
*a*b
*
Ваше завдання - взяти рядок і повернути найкоротший *рядок, який виробляє цю нитку.
Приклади програми :
7->7
a->a
ab->*ab
abcd->**abcd
769->*7*69
Ваша програма повинна обробляти будь-яку рядок, що містить принаймні один символ та лише *символи, що не надруковані ASCII для друку. Ніколи не можна повертати рядки, для яких процес не визначений, оскільки за визначенням вони не можуть створювати БУДЬ-яких рядків.
Застосовуються стандартні лазівки та правила вводу / виводу.
*?