Re: Liste injective
Publié : 11 déc. 2015 08:27
Imagine que tab[j] est un drapeau qui est :
- levé (tab[j] = True) lorsque l'élément j a déjà été vu dans la liste l ;
- baissé (tab[j] = False) lorsque l'élément j n'a pas encore été vu dans la liste l
puis passe en revue les différents éléments de la liste l : l[0], l[1], l[2], ...
Si, lorsque tu examine l, le drapeau tab[l] est déjà levé, c'est que l'élément l a déjà été vu une fois auparavant. Dans ce cas la liste n'est pas injective et on peut stopper l'énumération en retournant False.
Dans le cas contraire, il faut lever le drapeau tab[l] et poursuivre l'énumération en examinant l'élément l[i+1]. Si on peut poursuivre ainsi jusqu'à avoir examiné tous les éléments de l, c'est que cette liste est injective.
- levé (tab[j] = True) lorsque l'élément j a déjà été vu dans la liste l ;
- baissé (tab[j] = False) lorsque l'élément j n'a pas encore été vu dans la liste l
puis passe en revue les différents éléments de la liste l : l[0], l[1], l[2], ...
Si, lorsque tu examine l, le drapeau tab[l] est déjà levé, c'est que l'élément l a déjà été vu une fois auparavant. Dans ce cas la liste n'est pas injective et on peut stopper l'énumération en retournant False.
Dans le cas contraire, il faut lever le drapeau tab[l] et poursuivre l'énumération en examinant l'élément l[i+1]. Si on peut poursuivre ainsi jusqu'à avoir examiné tous les éléments de l, c'est que cette liste est injective.