Sağ Doğrusal Dilbilgisi - ∞ puanları
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
Daha sonra, nasıl 'çalıştırmayı' seçtiğinize bağlı olarak, 'evet' veya 'hayır' şeklinde çıkacaktır.
Ciddi bir giriş değil, sadece biraz eğlenceli;)
EDIT:
Belki biraz açıklamalıyım.
Bir dil bilgisi bir tanımlayan kurallar (üretimler) 'in bir grubu olduğu bir dil . Bir dil, bir alfabenin oluşturduğu, dilbilgisinin kurallarına uyan, olası tüm karakter dizileri olarak düşünülebilir.
Burada alfabe tüm ondalık basamakların kümesidir. Dilbilgisi kuralları, tüm dizelerin 13'e bölünebilen ondalık tamsayıları oluşturması gerektiğidir.
Bir dize dilimize ait olup olmadığını test etmek için yukarıdaki dilbilgisini kullanabiliriz.
Dilbilgisi kuralları, tekrarlayan bir şekilde değiştirilen terminal olmayan sembollerin yanı sıra (dilde bulunan öğeler) terminal sembollerini içerir.
Neler olduğunu bir örnekle açıklamak daha kolay:
Örneğin, test ettiğimiz dizenin 71955 olduğunu söyleyelim.
Her zaman bir başlangıç simgesi vardır (terminal olmayan), bunun üstündeki gramer durumunda 'S' olur. Bu noktada dizgimizden hiçbir karakter okumadık:
current pattern symbol read
S ε
Şimdi, dizgemizde '7' olan ilk sembolü okuduk, daha sonra şu anki düzenimizde '->' 'in sol tarafında bulunan terminal olmayanlardan herhangi birini içeren bir gramer kuralı arıyoruz. sembolümüz '->' in sağ tarafındadır. Neyse ki bir tane var (S-> 7G), bu yüzden şu anki düzenimizdeki terminal olmayan sembolleri yeni kuralın sağ tarafıyla değiştiriyoruz:
current pattern symbol read
7G 7
Şimdi modelimizde terminal olmayan 'G' var ve okunacak bir sonraki sembol '1'. Dilbilgimizde 'G-> 1' ile başlayan bir kural arıyoruz. (G-> 1F), bu yüzden terminal dışı terminali yeni kuralımızın RHS'si ile değiştiririz:
current pattern symbol read
71F 1
Bu işlemi tekrarlamaya devam et:
Sonraki kural: F-> 9D
current pattern symbol read
719D 9
Sonraki kural: D-> 5F
current pattern symbol read
7195F 5
Sonraki kural: F-> 5S
current pattern symbol read
71955S 5
Bu noktada ipimizde daha fazla sembol yoktur, fakat orada başka bir terminal olmayan sembol daha vardır. Dilbilgisindeki ilk kuraldan 'S'yi boş dize ile değiştirebileceğimizi görüyoruz (ε): S-> ε
Bunu yapmak bize şu anki bilgiyi verir: 71955ε, 71955'e eşdeğerdir.
İpimizdeki tüm sembolleri okuduk ve desende terminal olmayan semboller yok. Bu, dize dile ait demektir ve bu nedenle 71955 aslında 13 ile bölünebilir durumdadır.
Yani amaç, pattern = string'e sahip olmaktır. Herhangi bir terminal dışı sembolle kalırsanız, dizginizdeki tüm sembolleri okuduktan sonra, dize ait değildir. Benzer şekilde, hala okumak için dizenizde daha fazla sembol varsa, ancak dilbilgisinde ilerlemenizi sağlayan kurallar yoksa, dize dile ait değildir.