Gramática linear direita - ∞ pontos
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
Então, dependendo de como você optar por 'executá-lo', ele exibirá 'yes' ou 'no'.
Não é uma entrada séria, apenas um pouco de diversão;)
Edição:
Talvez eu deva explicar um pouco.
Uma gramática é um conjunto de regras (produções) que definem um idioma . Uma linguagem pode ser pensada como todas as seqüências possíveis formadas por um alfabeto, que estão em conformidade com as regras de sua gramática.
Aqui, o alfabeto é o conjunto de todos os dígitos decimais. As regras da gramática são que todas as seqüências de caracteres devem formar números decimais divisíveis por 13.
Podemos usar a gramática acima para testar se uma string pertence ao nosso idioma.
As regras da gramática contêm símbolos terminais (que são elementos no idioma), bem como símbolos não terminais que são substituídos recursivamente.
É mais fácil explicar o que está acontecendo com um exemplo:
Digamos, por exemplo, que a string que estamos testando seja 71955.
Sempre existe um símbolo de início (que não é terminal); no caso da gramática acima, é 'S'. Neste ponto, não lemos nenhum caractere da nossa string:
current pattern symbol read
S ε
Agora, lemos o primeiro símbolo em nossa string que é '7', depois procuramos uma regra na gramática que possua qualquer um dos não terminais em nosso padrão atual no lado esquerdo do '->' e que tem o nosso símbolo no lado direito do '->'. Felizmente, existe um (S-> 7G), por isso substituímos os símbolos não terminais em nosso padrão atual pelo lado direito da nova regra:
current pattern symbol read
7G 7
Agora, temos o 'G' não terminal em nosso padrão, e o próximo símbolo a ser lido é '1'; portanto, procuramos uma regra em nossa gramática que começa com 'G-> 1 ". Descobrimos que existe um. (G-> 1F), substituímos o não terminal pelo RHS de nossa nova regra:
current pattern symbol read
71F 1
Continue repetindo este processo:
Próxima regra: F-> 9D
current pattern symbol read
719D 9
Próxima regra: D-> 5F
current pattern symbol read
7195F 5
Próxima regra: F-> 5S
current pattern symbol read
71955S 5
Neste ponto, não temos mais símbolos em nossa string, mas temos outro símbolo não terminal lá. Vemos pela primeira regra da gramática que podemos substituir 'S' pela string vazia (ε): S-> ε
Isso nos dá o padrão atual: 71955ε, que é equivalente a 71955.
Lemos todos os símbolos em nossa string e o padrão não contém símbolos não terminais. O que significa que a string pertence ao idioma e, portanto, 71955 é de fato divisível por 13.
Ou seja, o objetivo é ter pattern = string. Se você tiver algum símbolo não terminal, depois de ler todos os símbolos da sua string, ela não pertence ao idioma. Da mesma forma, se você ainda tiver mais símbolos em sua sequência para ler, mas não houver regras na gramática que permitam avançar, a sequência não pertence ao idioma.