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