Eine Aktivität, die ich manchmal mache, wenn ich gelangweilt bin, besteht darin, ein paar Zeichen in übereinstimmenden Paaren zu schreiben. Ich zeichne dann Linien (über die Spitzen, niemals unter), um diese Charaktere zu verbinden. Zum Beispiel könnte ich schreiben und dann die Linien zeichnen als:
Oder ich schreibe
Sobald ich diese Linien gezeichnet habe, versuche ich, geschlossene Schleifen um Blöcke zu zeichnen, damit meine Schleife keine der Linien schneidet, die ich gerade gezeichnet habe. Zum Beispiel können wir im ersten die einzige Schleife um das ganze Ding zeichnen, aber im zweiten können wir eine Schleife nur um das s (oder alles andere) zeichnen.
Wenn wir ein wenig damit herumspielen, werden wir feststellen, dass einige Zeichenfolgen nur so gezeichnet werden können, dass geschlossene Schleifen alle oder keine Buchstaben enthalten (wie in unserem ersten Beispiel). Wir werden solche Zeichenfolgen als gut verknüpfte Zeichenfolgen bezeichnen.
Beachten Sie, dass einige Zeichenfolgen auf verschiedene Arten gezeichnet werden können. Zum Beispiel kann auf beide der folgenden Arten gezeichnet werden (und ein drittes nicht enthalten):
Wenn einer dieser Wege so gezeichnet werden kann, dass eine geschlossene Schleife einige der Zeichen enthält, ohne eine der Linien zu schneiden, ist die Zeichenfolge nicht richtig verknüpft. (so ist nicht gut verknüpft)
Aufgabe
Ihre Aufgabe ist es, ein Programm zu schreiben, um Zeichenfolgen zu identifizieren, die gut verknüpft sind. Ihre Eingabe besteht aus einer Zeichenfolge, bei der jedes Zeichen gerade oft vorkommt, und Ihre Ausgabe sollte einen von zwei unterschiedlichen konsistenten Werten enthalten, einen, wenn die Zeichenfolgen gut verknüpft sind, und den anderen.
Darüber hinaus muss das Programm eine gut angebundenen String Bedeutung
Jedes Zeichen erscheint in Ihrem Programm gerade oft.
Es sollte den Wahrheitswert ausgeben, wenn es selbst übergeben wird.
Ihr Programm sollte in der Lage sein, die richtige Ausgabe für eine beliebige Zeichenfolge aus druckbaren ASCII-Zeichen oder für Ihr eigenes Programm zu erstellen. Mit jedem Zeichen erscheint eine gerade Anzahl von Malen.
Antworten werden nach ihrer Länge in Bytes bewertet, wobei weniger Bytes eine bessere Bewertung darstellen.
Hinweis
Eine Zeichenfolge ist nicht gut verknüpft, wenn eine zusammenhängende, nicht leere, strikte Teilzeichenfolge vorhanden ist, sodass jedes Zeichen in dieser Teilzeichenfolge eine gerade Anzahl von Malen vorkommt.
Testfälle
abcbac -> True
abbcac -> False
bbbb -> False
abacbc -> True
abcbabcb -> True
abcbca -> False
there
.
abcbca -> False
.