Ja. Mal für eine Zeile: erstelle eine Wortliste L := (w_0, w_1, ..., w_n). Betrachte diejenigen i, für die gilt: w_i ist nicht in der Filter-Wort-Datei enthalten und rotiere die Liste um i nach links.
Das machst Du für alle Zeilen, dann entfernst Du die Duplikate, sortierst das Ergebnis und gibst es aus.
Beispiel: die Filter-Wort-Datei enthalte die Wörter FÜR, DIE, SIND
Eingabe:
VERWENDE FÜR DIE LÖSUNG STREAMS
STREAMS SIND DOKUMENTIERT
1. Zeile:
L_0 = (w_0, w_1, w_2, w_3, w_4) = (VERWENDE, FÜR, DIE, LÖSUNG, STREAMS)
I := {i aus [0, 4] für die gilt: w_i ist kein Element aus Filter-Wort-Datei} = {0, 3, 4}
Für jedes i aus I: rotiere die Liste um i nach links:
i = 0: L_00 = VERWENDE FÜR DIE LÖSUNG STREAMS
i = 3: L_01 = LÖSUNG STREAMS VERWENDE FÜR DIE
i = 4: L_02 = STREAMS VERWENDE FÜR DIE LÖSUNG
2. Zeile:
L_1 = (w_0, w_1, w_2) = (STREAMS, SIND, DOKUMENTIERT)
I := {i aus [0,2] für die gilt: w_i ist kein Element aus Filter-Wort-Datei} = {0, 2}
Für jedes i aus I: rotiere die Liste um i nach links:
i = 0: L_10 = STREAMS SIND DOKUMENTIERT
i = 2: L_11 = DOKUMENTIERT STREAMS SIND
Zwischenstand: L_00, L_01, L_02, L_10, L_11.
Nach dem Entfernen von Duplikaten: L_00, L_01, L_02, L_10, L_11 (weil es gibt keine Duplikate gibt, keine Änderung)
Alphabetisch sortieren: L_11, L_01, L_10, L_02, L_00
Ausgabe:
DOKUMENTIERT STREAMS SIND
LÖSUNG STREAMS VERWENDE FÜR DIE
STREAMS SIND DOKUMENTIERT
STREAMS VERWENDE FÜR DIE LÖSUNG
VERWENDE FÜR DIE LÖSUNG STREAMS