Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Muster in String (https://www.delphipraxis.net/187420-muster-string.html)

jobo 28. Nov 2015 15:53

AW: Muster in String
 
Klar, mit einer gewissen Empathie oder musterhaften analytischen Fähigkeiten kann man da schon Muster erkennen.
Aber ist das mustergültig? :)

Vor allem das "usw." schwächt die Aussagekraft der beiden Beispiele.
Auch eine steigende oder fallende Anzahl von Zeichen ergibt bspw. bei Wiederholung ein Muster, da sind der Fantasie wenig Grenzen gesetzt.

Außerdem finde ich meine Frage pädagogisch wertvoll.

Oder ist das Muster gültig?
  • a1b2cd3ef
  • ghi1j2kl3
Vielleicht sogar, ohne dass die darin enthaltenen nummerischen Zeichen für sich bereits ein Muster ergeben?

BUG 28. Nov 2015 16:53

AW: Muster in String
 
Wenn jemand genau 100 Zeichen lange Strings hat und solche Beispiele gibt, hoffe ich doch sehr auf einen einigermaßen durchdachten Anwendungsfall beim TE.
Es würde vielleicht helfen, wenn er sich wieder melden würde :stupid:

Monday 28. Nov 2015 21:01

AW: Muster in String
 
Ja ich meine das so wie Sir Rufo es auch gesehen hat. Das "usw." sollte nur heißen, dass eben verschiedene Muster möglich sind und nicht exakt so aussehen wie in dem Beispiel.

Und ja, ich dachte an die längste Musterkette.

Ich habe inzwischen die Idee, dass man einen der String durch den anderen von links nach rechts durchlaufen lässt und dann die Zeichen vergleicht. Irgendwann müsste sich dann theoretisch das Muster herauskristalisieren. Evtl. reicht es auch einen der Strings nach Rechts und nach Links zu schieben. Ich weiß nicht, ob die Idee verständlich ist. Bin gerade über den Code, aber habe noch nichts lauffähiges das ich zeigen kann.

(Anwendung: In einem Analyseprogramm, dass solche Zeichenfolgen ausgibt, will ich so Auffälligkeiten in der Ausgabe finden.)

Luckie 28. Nov 2015 21:47

AW: Muster in String
 
Ich werfe noch mal reguläre Ausdrücke in die Runde.

SMO 28. Nov 2015 23:26

AW: Muster in String
 
Und ich werfe mal längster gemeinsamer Substring in die Runde.
Denn wenn ich Monday recht verstehe, möchter er in diese Richtung, aber mit Wildcards im Suchmuster. Könnte schwierig werden.

BUG 29. Nov 2015 07:52

AW: Muster in String
 
Wenn ich das richtig sehe, dann sucht er den längsten String, dessen Zeichen in dieser Reihenfolge in beiden Eingabestrings vorkommen.

Oder anders formuliert: Suche den längsten String, so das man diesen String aus beiden Eingabestrings erhalten kann, indem man Zeichen löscht.

Ist das nun richtig oder nicht? Nur der Montag wird die Antwort bringen :mrgreen:

p80286 29. Nov 2015 09:27

AW: Muster in String
 
Zitat:

Zitat von BUG (Beitrag 1322838)
Wenn ich das richtig sehe, dann sucht er den längsten String, dessen Zeichen in dieser Reihenfolge in beiden Eingabestrings vorkommen.

Das könnte so sein. Aber Sir Rufo hat ja auch *1?2?3* als Muster identifiziert, da ist dann die Frage, was ist ein Muster, oder anders herum welche Bedingung muß eine Zeichenkombination erfüllen, damit sie ein Muster ist?

Gruß
K-H

Dejan Vu 29. Nov 2015 09:40

AW: Muster in String
 
Hat jemand mal meine Klasse aus probiert? Wenn man die etwas umschreibt, bekommt man tatsächlich die längsten Variationen (nein, keine Substrings, keine Muster, schlicht und ergreifend und mathematisch korrekt: Variationen) zweier Zeichenketten.
Code:
    internal class VariationMatcher
     {
         private readonly string _text1;
         private readonly string _text2;

         private readonly List<string> _patterns=new List<string>();

         public IEnumerable<string> Patterns { get { return _patterns; } }

         public VariationMatcher(string text1, string text2)
         {
             this._text1 = text1;
             this._text2 = text2;
         }

         public void FindLongestVariation()
         {
             for (int subLength = _text.Length; subLength >2; subLength--)
             {
                 ScanPattern(_text1, "", 0, subLength);
                 if (_Patterns.Any())
                   return;
              }
         }

         private void ScanPattern(string text, string pattern, int i, int remaining)
         {
             if (remaining == 0)
             {
                 FindPattern(_text2, pattern,"",0);
             }
             else
                 for (int j = i; j <= text.Length - remaining; j++)
                     ScanPattern(text, pattern + text[j], j + 1, remaining - 1);
         }

         private void FindPattern(string text, string patternToMatch, string pattern, int i)
         {
             if (pattern.Length == patternToMatch.Length)
                 _patterns.Add(pattern);
             else
             {
                 char charToMatch = patternToMatch[pattern.Length];
                 for (int j = i; j <= text.Length - patternToMatch.Length + pattern.Length; j++)
                     if (text[j] == charToMatch)
                         FindPattern(text, patternToMatch, pattern + charToMatch, j + 1);
             }
         }
     }
Nun nur noch 'FindLongestVariation' aufrufen und sich das Ergebnis in 'Patterns' anschauen.

BUG 29. Nov 2015 09:41

AW: Muster in String
 
Zitat:

Zitat von p80286 (Beitrag 1322839)
was ist ein Muster, oder anders herum welche Bedingung muß eine Zeichenkombination erfüllen, damit sie ein Muster ist?

Genau deshalb hab ich ja den Vorschlag gemacht. Das wäre eine konkrete Definition mit der man arbeiten könnte.

Ich hab bloß den Eindruck, das hier viele Muster lesen und dann gleich "Muster - Suchmuster - Regulärer Ausdruck" denken, während die Beispiele imho gar nicht so aussehen.

Perlsau 29. Nov 2015 09:42

AW: Muster in String
 
Im Grunde ist alles ein Muster. Anders ausgedrückt: Es gibt praktisch nichts, das sich nicht als Muster definieren ließe. Es geht doch aber darum, was der TE eigentlich sucht. Man kann nicht nach irgend einem Muster suchen, sondern immer nur nach einem ganz bestimmten Muster, das vor der Suche eindeutig und unmißverständlich zu definieren ist. So lange der TE diese Definition nicht liefert, ist jeder weitere Kommentar dazu reinste Spekulation.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz