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:
Ici, nous importons la bibliothèque Turtle dans notre projet:
import turtle
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)
, :
axiom = "F+F+F+F"
tempAx = ""
itr = 3
(itr- , )
, 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 = " "
( ):
, , . , :
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)
-:
-, :
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 :