Bernhard Peissl: Denksport - ein kleines Informatik-Rätsel

Beitrag lesen

Hallo Klaus,

Entweder reden wir aneinander vorbei, oder ich versteh's wirklich nicht.

Da dich das anscheinend doch interessiert, erkläre ich dir jetzt mal was ein Automat genau ist:

Er besteht aus drei Komponenten:

  1. Eingabeband: Darauf steht das zu analysierende Wort!
  2. Lesekopf: Zeigt zu Beignn auf das erste Zeichen und geht mit jedem Schritt um ein Feld(Zeichen) nach rechts
  3. Kontrolleinheit: Darin wird der aktuelle Zustand (q0, q1, q2) abgespeichert

Je nach dem was als nächstes unter dem Lesekopf steht, wird der Zustand abgefragt und eins weitergegangen, und wieder abgespeichert in der Kontrolleinheit. Wenn er also im Zustand q1 ein c einliest, geht er aufgrund der Regel (q1,c)->{q0} in den Zustand q0 über, dann liest er wieder was ein ... solange bis der Lesekopf entweder:

  • kein Zeichen mehr im Eingabeband findet, dann liefert der Automat zurück: Das Wort ist gültig! - wird akzeptiert.
  • undef liefert, dann bricht er ab mit der Meldung "Nicht akzeptiert!"

Das Eingabeband kannst du dir so vorstellen:
-----------------------------------
abcaabc acbb ba...
-----------------------------------

Die Oder-Striche () markieren die Felder des Eingabebandes!

Daher meine Frage nach dem Regelwerk. Ohne diesem Regelwerk ist eine gültige Lösung nicht zu finden.
Beispiel 1:
Vorgabe: Positives Matching ist nur möglich, wenn der gesamte untersuchte Ausdruck übereinstimmt.

  • matched bei 1 oder mehr
    * bei 0 oder mehr
    in verbinung mit () stellt mögliche Teilausdrücke dar
    Regex: (acbcab)+

stimmt ja eh, hab ich ja schon erlaubt ;-)

Beispiel 2:
Wie 1 jedoch Positives Matching ist möglich, wenn ein Teil des untersuchten Ausdrucks übereinstimmt.
^ stellt den Beginn, $ das Ende des Ausdrucks dar

Regex: ^(acbcab)+$

Von mir aus, wenn euch die $$ so gefallen ;-)

In Perl, oder POSFIX oder welche Programmiersprache auch immer würde diese RegEx wahrscheinlich korrekt matchen, jedoch ging es darum, es nur theoretisch zu formulieren, aber ich gebe ja zu, dass ich das vielleicht nicht so rüberbringen konnte, ist ja auch ein ziemlich abstraktes Themengebiet, oder kann mir jemand so einen Automaten mal in natura zeigen, damit ich einen anfassen kann?

Also, sorry for that :-(

Es ist ja auch in der Praxis so, daß die Regex stark von dem vorgegebenen Regelwerk abhängig ist. DU kannst ja auch nicht jede in Perl funktionierende Regex in awk einsetzen, da das zugrundeliegende Regelwerk geändert wurde.

Schon klar, aber wie gesagt, es ging irgendwie ums Allgemeine mit den besagten Operatoren (,+,,*,und )

Solange Du Dir über das gesamte Regelwerk für eine zu verwendende Regex im Klaren bist, ist die Aufgabe auch nicht lösbar. Leider:-(

Ich könnte ja auch sagen:
[ steht für Anfang des Ausdrucks
] steht für Ende des Ausdrucks

für 1 oder mehr

{} für strukturelle zusammenfassung
, als Trennzeichen von Alternativen

daraus ergibt sich folgende Regex:
[{ac,bc,a,b}#]

lass'ma durchgehen ;-)

BTW.: Das Leerzeichen ist _kein_ gültiges Sprachelement in der von Dir ursprünglich vorgestellten Sprache.

Das Alphabet lautete: {a,b,c}* - was auch {} inkludiert ;-)

Aber wie du dir sicher denken kannst, saug ich mir das nicht aus den Fingern, es gibt da haufenweise mathematische Definitionen, was ein Zeichen, ein Wort, ein Satz, ... ist, aber da sind soviele Sonderzeichen (Vereinigungs- und Durchschnittsmengen, griech. Buchstaben, ...) enthalten, dass ich unmöglich hier alles posten kann! Allerdings muss ich sie lernen :-(

Ich hoffe dass ich es auch so halbwegs erklären konnte ;-)

liebe Grüsse
Bernhard

0 71

Denksport - ein kleines Informatik-Rätsel

Bernhard Peissl
  • menschelei
  1. 0
    AlexBausW
    1. 0
      Bernhard Peissl
      1. 0
        Bernhard Peissl
      2. 0
        n.d. parker
        1. 0
          Bernhard Peissl
  2. 0
    F.Heyer
    1. 0
      Bernhard Peissl
      1. 0
        F.Heyer
        1. 0
          Bernhard Peissl
          1. 0
            F.Heyer
            1. 0
              Bernhard Peissl
              1. 0

                Obfuscated Perl Contest

                n.d. parker
                • perl
                1. 0
                  Bernhard Peissl
                  1. 0
                    Bernhard Peissl
    2. 0
      Christian Kruse
      1. 0
        F.Heyer
        1. 0
          Christian Kruse
          1. 0
            F.Heyer
            1. 0
              Bernhard Peissl
              1. 0
                Christian Kruse
                1. 0
                  F.Heyer
              2. 0
                F.Heyer
                1. 0
                  Bernhard Peissl
                  1. 0
                    F.Heyer
      2. 0
        Björn Höhrmann
        1. 0
          Linksetzer
  3. 0
    Marko
    1. 0
      Marko
      1. 0
        Bernhard Peissl
        1. 0
          Marko
          1. 0
            Bernhard Peissl
            1. 0
              Marko
              1. 0
                Bernhard Peissl
                1. 0
                  Marko
                2. 0
                  Michael N.
                  1. 0
                    Bernhard Peissl
                    1. 0
                      Michael N.
    2. 0
      Bernhard Peissl
      1. 0
        n.d. parker
        1. 0
          Bernhard Peissl
          1. 0
            n.d. parker
  4. 0
    Klaus Mock
    1. 0
      Klaus Mock
    2. 0
      Bernhard Peissl
      1. 0
        AlexBausW
        1. 0
          Bernhard Peissl
      2. 0
        Klaus Mock
        1. 0
          Bernhard Peissl
          1. 0
            Klaus Mock
            1. 0
              Bernhard Peissl
              1. 0
                Klaus Mock
                1. 0
                  Bernhard Peissl
                  1. 0
                    Bernhard Peissl
                  2. 0
                    Klaus Mock
                    1. 0
                      Bernhard Peissl
                      1. 0
                        Klaus Mock
      3. 0
        Björn Höhrmann
    3. 0
      Björn Höhrmann
      1. 0
        Linksetzer
        1. 0
          Bernhard Peissl
        2. 0
          Björn Höhrmann
  5. 0
    Björn Höhrmann
    1. 0
      Bernhard Peissl
      1. 0
        Björn Höhrmann
        1. 0
          Bernhard Peissl
          1. 0
            AlexBausW
            1. 0
              Bernhard Peissl
              1. 0
                AlexBausW
  6. 0
    Michael N.
    1. 0
      Bernhard Peissl