Björn Höhrmann: Denksport - ein kleines Informatik-Rätsel

Beitrag lesen

Also hier die Aufgabe:

Stellt euch vor ihr habt eine Sprache die sich aus nur drei Buchstaben zusammensetzt! Es geht also um eine Sprache aus dem Alphabet {a,b,c}*, WOBEI vor jedem 'c' zumindest ein 'a' oder 'b' stehen MUSS. Ansonsten Syntaxfehler ;-) Anders gesagt: Es kann kein c vorkommen, vor dem nicht entweder mindestens ein a oder b steht!

a,b oder c können dabei * ( >=0 ) mal vorkommen. Die Worte, die man mit dieser Sprache bilden kann, sollen durch einen regulären Ausdruck beschrieben werden.

Das würde bedeuten, dass auch "" ein gültiger Name wäre. Ich gehe mal davon aus, dass du das nicht möchtest, mein Ausdruck erfordert daher ein Zeichen. Wenn du das nicht möchtest, änder das '+' in ein '*'.

Mögliche Worte(Zeichenketten) sind z.b: aaa, abcabcc, ac, bcbbbb, ba, ... Keine Worte aus dieser Sprache wären: cabac, c, abccb

wenn 'abccb' ein gültiger Name ist, kann 'abcabcc' keiner sein, dort steht nämlich kein 'a' oder 'b' vor dem letzten 'c'.

Ihr seht, eine haarige Sache also, und gar nicht _soooo_ leicht.

Finde ich nicht:

/^    # string beginnt mit
(     # ein Konstrukt aus
[ab]c # c mit vorhergehenden 'a' oder 'b'
     # oder
[ab]  # 'a' oder 'b'
)+    # das ganze mind. 1 Mal
$/x   # string endet

while (<DATA>) {
  chomp;
  if (/^([ab]c[ab])+$/) {
    printf("%20s ist ok\n", $_);
  } else {
    printf("%20s ist ein FEHLER\n", $_);
  }
}
__DATA__
aaa
abcabcc
ac
bcbbbb
ba
cabac
c
abccb

gibt aus:

aaa ist ok
abcabcc ist ein FEHLER
     ac ist ok
bcbbbb ist ok
     ba ist ok
  cabac ist ein FEHLER
      c ist ein FEHLER
  abccb ist ein FEHLER

Ich empfehle:

Reguläre Ausdrücke -- Jeffrey E. F. Friedl -- ISBN: 3930673622
http://www.amazon.de/exec/obidos/ASIN/3930673622/081181081181

Ich lese dann mal die anderen Antworten...

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