Grammaire linéaire droite - ∞ points
S->ε
S->1A
S->0S
S->9I
S->3C
S->5E
S->4D
S->2B
S->7G
S->6F
S->8H
F->3K
K->0F
A->2L
K->1G
A->5B
A->0J
B->7A
J->5A
G->6K
G->8S
H->9K
F->5S
K->2H
I->6E
I->5D
J->4S
D->8I
B->6S
K->9B
F->6A
G->9A
K->6L
K->4J
C->1E
L->8K
E->5C
B->4K
C->0D
J->2K
D->2C
A->9F
J->7C
C->6J
C->8L
E->0K
L->0C
B->9C
E->2S
L->6I
I->0L
J->0I
B->2I
I->3B
H->1C
I->7F
C->4H
F->1I
G->4I
I->0G
C->3G
F->8C
D->0A
E->3A
I->9H
A->7D
C->2F
H->7I
A->8E
F->9D
E->8F
A->6C
D->6G
G->0E
D->5F
E->9G
H->2D
D->7H
H->3E
I->2A
K->3I
C->9S
C->7K
E->4B
D->1B
L->1D
J->9E
I->1S
E->1L
J->8D
D->9J
L->2E
J->3L
B->5L
B->8B
L->7J
L->9L
G->1F
A->4A
K->5K
B->3J
H->6H
E->7E
J->1J
D->4E
G->2G
J->6B
D->3D
E->6D
H->4F
I->4C
C->5I
F->0H
H->5G
K->7S
G->3H
L->5H
H->8J
A->3S
H->0B
B->1H
G->7L
K->8A
F->2J
F->7B
L->4G
F->4L
A->1K
B->0G
G->5J
L->3F
Ensuite, selon la façon dont vous choisissez de «l'exécuter», il affichera «oui» ou «non».
Pas une entrée sérieuse, juste du plaisir;)
EDIT:
Je devrais peut - être expliquer un peu.
UNE grammaire est un ensemble de règles (productions) qui définissent une langue . Une langue peut être considérée comme l'ensemble des chaînes possibles formées par un alphabet, qui sont conformes aux règles de sa grammaire.
Ici, l'alphabet est l'ensemble de tous les chiffres décimaux. Les règles de la grammaire sont que toutes les chaînes doivent former des entiers décimaux divisibles par 13.
Nous pouvons utiliser la grammaire ci-dessus pour tester si une chaîne appartient à notre langue.
Les règles de la grammaire contiennent des symboles terminaux (qui sont des éléments du langage) ainsi que des symboles non terminaux qui sont remplacés récursivement.
Il est plus facile d'expliquer ce qui se passe avec un exemple:
Disons par exemple que la chaîne que nous testons est 71955.
Il y a toujours un symbole de début (qui n'est pas terminal), dans le cas de la grammaire ci-dessus, c'est «S». À ce stade, nous n'avons lu aucun caractère de notre chaîne:
current pattern symbol read
S ε
Maintenant, nous lisons le premier symbole de notre chaîne qui est «7», puis nous recherchons une règle dans la grammaire qui a l'un des non-terminaux de notre modèle actuel dans le côté gauche du «->» et que a notre symbole dans le côté droit du '->'. Heureusement, il y en a un (S-> 7G), nous remplaçons donc les symboles non terminaux dans notre modèle actuel par le côté droit de la nouvelle règle:
current pattern symbol read
7G 7
Maintenant, nous avons le «G» non terminal dans notre modèle, et le prochain symbole à lire est «1». Nous recherchons donc une règle dans notre grammaire qui commence par «G-> 1». Nous en trouvons un (G-> 1F), nous remplaçons donc le non terminal par le RHS de notre nouvelle règle:
current pattern symbol read
71F 1
Continuez à répéter ce processus:
Règle suivante: F-> 9D
current pattern symbol read
719D 9
Règle suivante: D-> 5F
current pattern symbol read
7195F 5
Règle suivante: F-> 5S
current pattern symbol read
71955S 5
À ce stade, nous n'avons plus de symboles dans notre chaîne, mais nous avons un autre symbole non terminal là-dedans. Nous voyons à partir de la première règle de la grammaire que nous pouvons remplacer 'S' par la chaîne vide (ε): S-> ε
Cela nous donne le bagout actuel: 71955ε qui est l'équivalent de 71955.
Nous avons lu tous les symboles de notre chaîne et le modèle ne contient aucun symbole non terminal. Ce qui signifie que la chaîne appartient à la langue et donc 71955 est en fait divisible par 13.
C'est-à-dire que le but est d'avoir pattern = string. Si vous vous retrouvez avec des symboles non terminaux, après avoir lu tous les symboles de votre chaîne, la chaîne n'appartient pas à la langue. De même, si vous avez encore plus de symboles à lire dans votre chaîne, mais qu'il n'y a pas de règles dans la grammaire vous permettant d'avancer, alors la chaîne n'appartient pas à la langue.