Sistemas L e o que eles se permitem

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:





  1. Aqui estamos importando a biblioteca Turtle em nosso projeto:





    import turtle







  2. 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)







  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() . "". -:





, "" , .





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 :












All Articles