Eine übliche Optimierung, um Platz in Binärdateien zu sparen, besteht darin, Zeichenfolgenliterale zusammenzuführen, wobei ein Literal das Suffix eines anderen ist. Zum Beispiel eine Binärdatei mit den Zeichenfolgenliteralen
a: foobar
b: bar
c: barbaz
d: foobarbaz
e: baz
enthält möglicherweise den folgenden String-Literal-Pool ( #der den \0-terminator darstellt):
foobar#foobarbaz#
mit den Symbolen a, b, c, und dmit den folgenden Werten in Bezug auf den Anfang des Zeichenfolge Pools:
a: 0
b: 3
c: 10
d: 7
e: 13
In dieser Aufgabe müssen Sie die minimale Größe eines Zeichenfolgenpools für einen bestimmten Satz von Eingabezeichenfolgen berechnen.
Eingang
Die Eingabe besteht aus einer Reihe von bis zu 999 Zeichenfolgen mit jeweils bis zu 80 ASCII-Zeichen (ohne Zeilenumbruch) im Bereich von 32 bis einschließlich 127 und einem einzelnen Zeilenumbruchzeichen.
Ausgabe
Suchen Sie die kürzeste Zeichenfolge, sodass jede der Eingabezeichenfolgen (einschließlich der abschließenden Zeilenumbrüche) Teilzeichenfolgen dieser Zeichenfolge sind. Die Ausgabe muss die Länge dieser kürzesten Zeichenfolge sein. Geben Sie den String nicht aus, sondern nur seine Länge.
Wertung
Diese Herausforderung ist Code Golf, es gelten Standardlücken. Die Lösung mit der geringsten Länge in Oktetten gewinnt.
Beispiele
Eingang:
foobar bar barbaz foobarbaz bazkürzeste Zeichenfolge,
#die Zeilenumbruch darstellt:foobar#foobarbaz#Länge: 17
Eingang:
foobar foobaz foobarbaz barbazkürzeste Zeichenfolge,
#die Zeilenumbruch darstellt:foobar#foobaz#foobarbaz#Länge: 24