Vamos começar com o básico, se tomarmos uma definição da bem conhecida e amada Wikipedia, então o sistema L (ou sistema de Lindenmeier ) é um sistema de reescrita paralelo e uma forma de gramática formal.
Em termos simples, o sistema L consiste em um alfabeto de caracteres que pode ser usado para criar strings, um conjunto de regras gerativas que especificam regras de substituição para cada caractere, uma string inicial ( "axioma" ), com a qual a construção começa, e um mecanismo de translação formado por linhas em estruturas geométricas. O exemplo mais simples de um sistema L é o problema de construção de árvores.
Dados de entrada:
String ( doravante Axiom ): AB
Variáveis ( que podemos usar na construção da árvore ): ABC
Regra (a regra pela qual cada variável na próxima linha muda ):
A -> AB
B -> AC
C -> A
As seguintes transformações são obtidas:
Geração |
doença |
|---|---|
1 |
AB |
2 |
AB AC |
3 |
AB AC AB A |
4 |
AB AC AB A AB AC AB |
cinco |
AB AC AB A AB AC AB AB AC AB A AB AC |
6 |
etc ... |
A principal direção em que os sistemas L são usados é a modelagem dos processos de crescimento de organismos vivos e objetos inanimados (cristais, conchas de moluscos ou favos de mel) .
Exemplo:
Para simular tais processos, usaremos uma linguagem de programação como Python, que possui uma biblioteca "tartaruga" embutida .
Então vamos começar:
Aqui estamos importando a biblioteca Turtle em nosso projeto:
import turtle
A seguir, incluímos todas as configurações necessárias para nossa tartaruga :
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() . "". -:
, "" , .
No final, também gostaria de acrescentar que gostei muito de trabalhar e escrever sobre este tema, talvez no futuro, escreverei uma série de artigos sobre o tema "Sistemas L", mas, enquanto isso, quero apresento a vocês os resultados da minha criatividade cutucada :