A ideia da solução passa por repetir tantas vezes quantas o tamanho da sequência a escolha aleatória de uma das bases presentes na cadeia de ADN, de entre as quatro possíveis (Adenina (A), Citosina (C), Guanina (G) e Timina (T). Os resultados vão sendo acumulados. Daí a solução.
01.
import
random
02.
03.
def
gera_adn(tam):
04.
"""Gera uma cadeia de ADN de tamanho tam. Padrão ciclo-acumulador"""
05.
adn
=
''
06.
for
i
in
range(tam):
07.
base
=
random.choice(
'TACG'
)
08.
adn
=
adn
+
base
09.
return
adn
Suponhamos agora uma situação semelhante. Alguém anda perdido numa cidade, perfeitamente geométrica, e pede ajuda para se deslocar a um dado local da cidade. Recebe ajuda na forma de uma sequência de indicações do tipo Avança (A), Recua (R), Vira à Esquerda (E) ou Vira à Direita (D). Admitamos que o que se pretende é um programa que gere sequências válidas de indicações, de tamanho variável. O leitor não estranhará, depois de uma breve reflexão, que a solução proposta não lhe ofereça grandes dúvidas.
01.
mport random
02.
import
random
03.
def
gera_comandos(tam):
04.
"""
05.
Gera uma sequências de indicações de movimento numa cidade de tamanho tam.
06.
Padrão ciclo-acumulador
07.
"""
08.
seq_comandos
=
''
09.
for
i
in
range(tam):
10.
comando
=
random.choice(
'ARED'
)
11.
seq_comandos
=
seq_comandos
+
comando
12.
return
seq_comandos
1.
import
random
2.
3.
def
gera_comandos(tamanho, alfabeto):
4.
""" Gera uma sequência de comandos com elementos retirados aleatoriamente do alfabeto."""
5.
comandos
=
''
6.
for
i
in
range(tamanho):
7.
comandos
=
comandos
+
random.choice(alfabeto)
8.
return
comandos
01.
import
random
02.
03.
def
gera_comandos(n):
04.
"""Gera n comandos aleatoriamente. Alguns movimentos são mais prováveis do que outros."""
05.
comandos
=
''
06.
for
i
in
range(n):
07.
if
random.choice([
0
,
0
,
0
,
1
])
=
=
0
:
08.
comandos
+
=
random.choice([
'A'
,
'A'
,
'A'
,
'A'
,
'R'
])
09.
else
:
10.
comandos
+
=
random.choice([
'E'
,’E’,
'D'
])
11.
return
comandos
Sem comentários:
Enviar um comentário