Ich muss eine Hausaufgabe lösen, aber ich habe nur sehr begrenzte Kenntnisse von Prolog. Die Aufgabe ist folgende:
Schreiben Sie ein Prolog-Programm, das alle Teilzeichenfolgen einer Zeichenfolge auflisten kann, deren Länge mindestens zwei Zeichen beträgt und das erste und letzte Zeichen identisch ist.Alle Teilstrings mit demselben Anfang und Ende
Zum Beispiel:
?- sameend("teletubbies", R).
R = "telet";
R = "ele";
R = "eletubbie";
R = "etubbie";
R = "bb";
false.
Mein Ansatz für dieses Problem ist, dass ich mit Kopf/Schwanz über den String iterieren sollte und den Index des nächsten Buchstaben finden, die die gleiche ist wie der Strom (es genügt die mindestens 2-Längen-Anforderung) und schneidet die Teilkette mit sub_string
Prädikat.
einfach ist, können Sie Ihren aktuellen Ansatz zeigen? –
Es war nur eine Idee, aber im Code könnte es vielleicht so aussehen: sameend ([H | T], R): - sameend ([T], R),% und es sollte wieder ein rekursiver Aufruf stattfinden wo das gleiche Zeichen ist und dann sub_string() von H's Position zu seinem nächsten Vorkommen. –