Se percebemos a solução para o Problema 3.12 então estes também não oferecem grande dificuldade. Comecemos pelo ... primeiro.
import turtle
def adn_tartaruga(tartaruga, adn):
""" Simula o comportamento da tartaruga ditado pelo seu ADN."""
for car in adn:
if car == 'f':
tartaruga.fd(50)
elif car == 't':
tartaruga.bk(50)
elif car == 'd':
tartaruga.rt(45)
else:
tartaruga.lt(45)
if __name__ == ‘__main__’:
tarta = turtle.Turtle()
adn_1 = ‘ffttedtftedf’
adn_tartaruga(tarta,adn_1)
turtle.exitonclick()
O que é que a solução tem de especial? Muito pouco. Os valores do movimento e das rotações são fixos. Por outro lado, usamos o construtor do módulo
turtle para definir uma tartaruga concreta em vez de usar a tartaruga genérica. Finalmente, o ADN da tartaruga foi por nós definido “à mão” . A primeira variante, Problema 3.16, pede-nos que os valores do movimento e das rotações não sejam fixos mas possam variar dentro de valores razoáveis.
import random
def adn_tartaruga_alea(tartaruga, adn):
""" Simula o comportamento da tartaruga ditado pelo seu ADN."""
for car in adn:
lado = random.randint(20,100)
angulo = random.randint(10,180)
if car == 'f':
tartaruga.fd(lado)
elif car == 't':
tartaruga.bk(lado)
elif car == 'd':
tartaruga.rt(angulo)
else:
tartaruga.lt(angulo)
Como se observa a adaptação às novas condições foi fácil. Finalmente, no problema 3.17, apenas nos é pedido que o ADN da tartaruga seja ele próprio gerado aleatoriamente. Isso foi o que aprendemos a fazer com a solução ao Problema 3.12.
import random
def adn_tartaruga_total(tartaruga, passos):
""" Simula o comportamento da tartaruga em função do seu ADN. O dito
ADN é gerado aleatoriamente."""
adn =''
for i in range(passos):
adn = adn + random.choice('fted')
adn_tartaruga_alea(tartaruga,adn)
def adn_tartaruga_alea(tartaruga, adn):
""" Simula o comportamento da tartaruga ditado pelo seu ADN."""
for car in adn:
lado = random.randint(20,100)
angulo = random.randint(10,180)
if car == 'f':
tartaruga.fd(lado)
elif car == 't':
tartaruga.bk(lado)
elif car == 'd':
tartaruga.rt(angulo)
else:
tartaruga.lt(angulo)
That's it!
Sem comentários:
Enviar um comentário