Angenommen, wir verwenden die folgenden Regeln, um eine einzelne Zeichenfolge aus einer anderen Zeichenfolge zu ziehen, die nur ASCII-druckbare Zeichen enthält und als *-string bezeichnet wird. Wenn die Zeichenfolge ausgeht, bevor der Prozess angehalten wird, ist dies ein Fehler, und das Ergebnis des Prozesses ist in diesem Fall undefiniert:
- Beginnen mit
d=1, s="" - Immer wenn Sie auf ein
*treffen, multiplizieren Siedmit 2. Immer wenn Sie auf ein anderes Zeichen treffen, verketten Sie es bis zum Endesund subtrahieren 1 vond. Wenn jetztd=0, halt an und kehre zurücks
Definierte Beispiele :
d->d
769->7
abcd56->a
*abcd56->ab
**abcd56->abcd
*7*690->769
***abcdefghij->abcdefgh
Undefinierte Beispiele : (Beachten Sie, dass die leere Zeichenfolge auch eine davon sein würde.)
*7
**769
*7*
*a*b
*
Ihre Aufgabe ist es, eine Zeichenfolge zu nehmen und die kürzeste *Zeichenfolge zurückzugeben, die diese Zeichenfolge erzeugt.
Programmbeispiele :
7->7
a->a
ab->*ab
abcd->**abcd
769->*7*69
Ihr Programm sollte alle Zeichenfolgen verarbeiten, die mindestens ein Zeichen und nur Nicht- *ASCII-druckbare Zeichen enthalten. Sie können niemals Zeichenfolgen zurückgeben, für die der Prozess undefiniert ist, da sie per Definition keine Zeichenfolgen erzeugen können.
Es gelten Standard-Regelungslücken und I / O-Regeln.
*?