Source: https://reds.heig-vd.ch/share/cours/aro/ARO2/Exo2/ARO2_exercices_2_corr.pdf