Les systèmes en L et ce qu'ils se permettent

Commençons par les bases, si nous prenons une définition du Wikipédia bien connu et bien-aimé, alors le système L (ou le système de Lindenmeier ) est un système de réécriture parallèle et une forme de grammaire formelle.





En termes simples, le système en L se compose d'un alphabet de caractères pouvant être utilisé pour créer des chaînes, d'un ensemble de règles génératives qui spécifient des règles de substitution pour chaque caractère, d'une chaîne initiale ( "axiome" ), avec laquelle la construction commence, et un mécanisme de traduction formé par des lignes en structures géométriques. L'exemple le plus simple d'un système en L est le problème de la construction des arbres.





Des données d'entrée:





Chaîne ( ci-après Axiom ): AB





Variables ( que nous pouvons utiliser pour construire l'arbre ): ABC





Règle (la règle par laquelle chaque variable de la ligne suivante change ):





  • A -> AB





  • B -> AC





  • C -> A





Les transformations suivantes sont obtenues:                                        





Génération





état





un





UN B





2





AB AC





3





AB AC AB A





4





AB AC AB A AB AC AB





cinq





AB AC AB A AB AC AB AB AC AB A AB AC





6





etc…





La principale direction dans laquelle les systèmes L sont utilisés est la modélisation des processus de croissance des organismes vivants et des objets inanimés (cristaux, coquilles de mollusques ou nids d'abeilles) .





Exemple:





Pour simuler de tels processus, nous utiliserons un langage de programmation tel que Python, qui a une bibliothèque "tortue" intégrée .





Alors, commençons:





  1. Ici, nous importons la bibliothèque Turtle dans notre projet:





    import turtle







  2. Ensuite, nous incluons toutes les configurations nécessaires pour notre tortue :





    turtle.hideturtle()







    turtle.tracer(1)







    turtle.penup()







    turtle.setposition(-300,340)







    turtle.pendown()







    turtle.pensize(1)







  3. , :





    axiom = "F+F+F+F"







    tempAx = ""







    itr = 3







    (itr- , )





  4. , itr-, "" /:





    for k in range(itr):







    for ch in axiom:







    if ch == "+":







    tempAx = tempAx + "+"







    elif ch == "-":







    tempAx = tempAx + "-"







    elif ch == "F": #F







    tempAx = tempAx + "F+F-f-F+F"







    else:







    tempAx = tempAx + "f"







    axiom = tempAx







    tempAx = " "







    print(axiom)







    , "+":





    if ch == "+":







    tempAx = tempAx + "+"







    ( ) “+” “+” . “-” “f”, “-” “f” . “F”, “F + F – f – F + F”, . , “”, . :





    axiom = tempAx







    tempAx = " "







    ( ):





  5. , , . , :





    for ch in axiom:







    if ch == "+":







    turtle.right(45)







    turtle.forward(10)







    turtle.right(45)







    elif ch == "-":







    turtle.left(45)







    turtle.forward(10)







    turtle.left(45)







    else:







    turtle.forward(20)







    , , "+", "-", "F" "f". , "+":





    if ch == "+":







    turtle.right(45)







    turtle.forward(10)







    turtle.right(45)







    , 45 , , 10, , 45 . "-":





    elif ch == "-":







    turtle.left(45)







    turtle.forward(10)







    turtle.left(45)







    , "+", , . "F" "f", 20 :





    else:







    turtle.forward(20)







    -:





  6. -, :





    turtle.fillcolor("#99BBFF")







    turtle.begin_fill()







    #99BBFF - (RGB: 153, 187, 255), begin_fill() . , , :





    turtle.end_fill()







    turtle.update()







    turtle.done()







    end_fill() . "". -:





, "" , .





En fin de compte, je veux aussi ajouter que j'ai vraiment aimé travailler et écrire sur ce sujet, peut-être que dans le futur, j'écrirai un certain nombre d'articles sur le thème des "L-systèmes", mais en attendant, je veux vous présenter les résultats de ma créativité poussée :












All Articles