Source: https://dept-info.labri.fr/~griffaul/Enseignement/MasterBioInfo-12-13/ASD2/corrige.pdf