Ich möchte ein DCG, die Sprachen wie diese erstellen erhalten akzeptiert:Wie kann ich dieses DCG in Prolog erstellen?
- c
- bbbcbbb
- bbacbba
- ABACABA
- aababacaababa
Wie Sie dieses Mittel sehen dass es eine bestimmte Reihenfolge von a und b gibt, dann eine c und dann wieder die exakt gleiche Reihenfolge wie vor der c. Wenn diese Bedingungen nicht erfüllt werden, wird es fehlschlagen.
Ich bin zur Zeit hier mit meinem Ansatz (Arbeiten, sondern erkennt auch falsche Wörter)
s --> x, s, x.
s --> [c].
x --> [a].
x --> [b].
Kann jemand von euch mir helfen, was ich ändern muss? Ich weiß nicht, wie ich weitermachen soll. Danke vielmals.
Dieser Entwurf erzeugt auch schön Lösungen über 'Phrase (s, L) .' – lurker
@mbratch: Das ist mehr Glück als Absicht. Der kanonische Weg, um alle Lösungen zu sehen, ist "? - Länge (L, N), Phrase (s, L).". Jetzt sind sie auch nach Länge sortiert. Siehe http://stackoverflow.com/questions/6524722/prolog-combining-dcg-grammars-with-other-restrictions/6525089#6525089 – false
Lefty Gomez sagte: "Ich wäre lieber glücklich als gut." ;) Aber es ist eine nette Zufall, dass der obige Code die "a, b" -Sequenzen in der Reihenfolge der Länge erzeugt und die Permutationen jeder Länge vervollständigt, bevor sie zur nächsten Länge übergeht. Ich lerne immer noch viele Nuancen von DCGs, daher sind dies und @ CapelliC's Post beide sehr aufschlussreich für mich. – lurker