sábado, 19 de outubro de 2013

Problemas 3.15, 3.16 e 3.17

Se percebemos a solução para o Problema 3.12 então estes também não oferecem grande dificuldade. Comecemos pelo ... primeiro.
01.import turtle
02. 
03.def adn_tartaruga(tartaruga, adn):
04.    """ Simula o comportamento da tartaruga ditado pelo seu ADN."""
05.    for car in adn:
06.        if car == 'f':
07.            tartaruga.fd(50)
08.        elif car == 't':
09.            tartaruga.bk(50)
10.        elif car == 'd':
11.            tartaruga.rt(45)
12.        else:
13.            tartaruga.lt(45)
14. 
15.if __name__ == ‘__main__’:
16.    tarta = turtle.Turtle()
17.    adn_1 = ‘ffttedtftedf’
18.    adn_tartaruga(tarta,adn_1)
19.    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.
01.import random
02. 
03.def adn_tartaruga_alea(tartaruga, adn):
04.    """ Simula o comportamento da tartaruga ditado pelo seu ADN."""
05.    for car in adn:
06.        lado = random.randint(20,100)
07.        angulo = random.randint(10,180)
08.        if car == 'f':
09.            tartaruga.fd(lado)
10.        elif car == 't':
11.            tartaruga.bk(lado)
12.        elif car == 'd':
13.            tartaruga.rt(angulo)
14.        else:
15.            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.
01.import random
02. 
03.def adn_tartaruga_total(tartaruga, passos):
04.    """ Simula o comportamento da tartaruga em função do seu ADN. O dito
05.    ADN é gerado aleatoriamente."""
06.    adn =''
07.    for i in range(passos):
08.        adn = adn + random.choice('fted')
09.    adn_tartaruga_alea(tartaruga,adn)
10. 
11. 
12.def adn_tartaruga_alea(tartaruga, adn):
13.    """ Simula o comportamento da tartaruga ditado pelo seu ADN."""
14.    for car in adn:
15.        lado = random.randint(20,100)
16.        angulo = random.randint(10,180)
17.        if car == 'f':
18.            tartaruga.fd(lado)
19.        elif car == 't':
20.            tartaruga.bk(lado)
21.        elif car == 'd':
22.            tartaruga.rt(angulo)
23.        else:
24.            tartaruga.lt(angulo)
That's it!

Sem comentários:

Enviar um comentário