Avec son papa, ils ont alors pensé qu'il serait amusant de compléter cet exposé avec le calcul (simplifié) de la population des souris.
Voici les hypothèses:
- Chaque souris femelle donne, pour la première fois après 10 semaines, puis toutes les 6 semaines, naissance à 6 souriceaux (3 femelles et 3 mâles)
- Aucune souris ne meurt (l'espérance de vie d'uns souris est d'environ 2 ans)
- Toutes les souris ont tous des petits (c'est-à-dire toutes les femelles :-)).
- Nous commençons avec une seule souris femelle (-> Immaculée Conception :-))
Bonne chance!
Suite...
J'ai pour ma part résolu ce problème avec un petit programme Perl :
#!/usr/bin/perl
use strict;
my $INITIAL_POPULATION = 1; # Only Females!
my $GESTATION1 = 10; # GESTATION1 has to be
my $GESTATION2 = 6; # greater than GESTATION 2
my $FORK_M = 3;
my $FORK_F = 3;
my $MAX_WEEKS = 100;
my $population = $INITIAL_POPULATION; # Initial population
my @female = (map(0, (0..$GESTATION1 - 2)), $INITIAL_POPULATION);
foreach my $week (0..$MAX_WEEKS) {
printf ("%3i -> %20s\n", $week, $population);
my $x = $female[$week % $GESTATION1];
$population += $x*($FORK_M + $FORK_F);
$female[$week % $GESTATION1] = 0;
$female[($week + $GESTATION2) % $GESTATION1] += $x;
$female[($week + $GESTATION1) % $GESTATION1] += $x*$FORK_F;
}
Ce programme utilise peu de mémoire. En plus des constantes, il à besoin d'un "array" (@female) de 9 INTEGERS, et de 3 variables INTEGER : un compteur ($population), un itérateur ($week) et une variable temporaire ($x).