J'essaye de modifier le code python des lapins mortels de Fibonacci afin de faire varier la fécondité des lapins en fonction de leur âge. Faisons un exemple.Lapins mortels de Fibonacci à fécondité variable
Mes lapins atteignent leur maturité après 3 mois et meurent après 6 mois. Au cours de leurs 4 mois de fécondité, ils produisent un nombre différent de progéniture en fonction de leur âge. Quand ils ont 3 mois, ils produisent 2 paires de lapins, à 4 mois produisent 3 paires de lapins et ainsi de suite jusqu'au sixième mois. Chaque paire de lapins est formée par une femelle et un mâle. À la fin je compterais le nombre de paires pas le nombre d'individus. valeurs Fécondité de la naissance à la mort:
fecundity = [0, 0, 2, 3, 3, 1]
Le code python que j'utilise (https://github.com/jschendel/Rosalind/blob/master/011_FIBD.py) est:
n = 12
m = 6
#n = months to run
#m = how many months the rabbits live
# Populate the initial rabbits.
Rabbits = [1]+[0]*(m-1)
# Calculate the new rabbits (bunnies), in a given month.
# Start at use range(1,n) since our initial population is 0 month old.
for month in range(1, n):
Bunnies = 0
# Get the number of Rabbits able to old enough to give birth.
for j in range(1,m):
Bunnies += Rabbits[(month-j-1)%m]
# Bunnies replace the old rabbits who died.
Rabbits[(month)%m] = Bunnies
# Total rabbits is the sum of the living rabbits.
Total_Rabbits = sum(Rabbits)
Je ne suis pas sûr de savoir comment mettre en œuvre la variation de la fécondité. Toute aide est appréciée!
Merci, Valentina
Les paires '[0, 0, 2, 3, 3, 1]' ne devraient-elles pas être paires de lapins (un mâle, une femelle)? – fcalderan
Oui, je ne l'ai pas précisé! Les nouveau-nés sont des paires de lapins (un F un M). Mais à la fin je compterais le nombre de paires pas le nombre d'individus simples. Je modifie la question – Valentina
'pour l'année dans l'intervalle (1, n):' devrait être le mois, pas l'année. 'Les lapins [année-j-1% m]' sont les lapins nés il y a j mois, appliquez sur cette ligne votre facteur de fécondité. – xvan