2012-04-05 20 views
0

Die Aufgabe besteht darin, eine bestimmte Textzeichenfolge in Abschnitte gemäß verschiedenen Einschränkungen für jeden Abschnitt zu gruppieren. Nehmen wir an, wir haben eine Saite, die "Lorem ipsum dolorem" ist. Wir haben auch 3 Abschnitte. Jeder Abschnitt enthält Einschränkungen, die die Menge des Textes einschränken können, der in dem Abschnitt enthalten sein kann. Diese Einschränkungen können in Bezug auf die Anzahl der Zeichen oder die Anzahl der Wörter angegeben werden. Zum Beispiel kann der erste Abschnitt mindestens fünf Zeichen mit maximal zehn Zeichen enthalten. Der zweite Abschnitt kann mindestens ein Wort mit maximal fünf Wörtern enthalten, wobei jedes Wort zwischen 2 und 10 Zeichen lang ist. Der dritte Abschnitt kann die gleiche Einschränkung wie der erste haben.Gruppieren von Text in Abschnitte Algorithmus

Wir müssen den gesamten verfügbaren Text verwenden, sonst gibt es keine Gruppierungslösung. Wörter können nicht getrennt werden (so können wir das a-Wort beim Gruppieren nicht in mehrere Teile zerlegen). Lösungen sind besser, wenn wir Sätze in der Gruppierung zusammenhalten, alle anderen Dinge gleich.

Was ist der effizienteste Weg, um den Text zu gruppieren?

+0

Was suchen Sie, um die Einschränkungen für einen gegebenen Text zu finden, oder Einschränkungen zu implementieren? BTW: Hausaufgaben? – Matthias

+0

Implementieren Sie die angegebenen Einschränkungen. Und nein, keine Hausaufgaben. – tabdulla

+0

Es würde helfen, wenn Sie einige Beispiele geben könnten. –

Antwort

0

Wenn Sie nur Zeichen/Zahlen und Wörter zählen, ist es ein Fall für reguläre Ausdrücke ist: http://en.wikipedia.org/wiki/Regular_expressions

EDIT

Eg ist Folgendes zu beachten:

sed -E -e 's/([a-z]{2,10}) (([a-z]{2,4}){1,2})([a-z]{2,10})/G:\1 G:\2 
G:\4/' 

Wenn man trifft dies zu "aaa bb bbbb ccccc", man bekommt:

G:aaa G:bb bbbb G:ccccc 
+0

Ich glaube nicht. Es kann eine Reihe von Wörtern oder Zeichen in jedem Abschnitt geben, und einige Lösungen sind bevorzugter als andere. Zum Beispiel ist es vorzuziehen, Sätze zu gruppieren, alle anderen Dinge gleich. – tabdulla

+0

Ich verstehe nicht, was Sie unter "eine Reihe von Wörtern oder Zeichen in jedem Abschnitt" verstehen. Jeder Regex kann Bereiche abdecken, oder? Und in Bezug auf die Präferenzen: Test für die Nices zuerst, wenn keine Übereinstimmung, verwenden Sie Ihre zweite Wahl, etc. Allerdings können Sie es mit einem Regex-Tool wie awk tun und verschiedene Werte für verschiedene Arten von Übereinstimmungen zuweisen. – Matthias

+0

Können Sie ein Beispiel für eine Regex geben, die funktionieren würde? – tabdulla