7Fermer9
WarptenLe 13/10/2009 à 12:49
Comme promis, voilà la source

nodble3(l)
Prgm
Local l,x,...©ETC ^^
SortA l
For x,1,dim(l)
l[x]->a
0->n
For y,x+1,dim(l)
l[y]->b
If a=b:n+1->n
If y<dim(l) Then
If l[y+1]!=a:Exit
EndIf
EndFor
augment(left(l,x),right(l,dim(l)-x-n))->l
EndFor
l->main/lout
EndPrgm


En gros :
{1,1,1,2,5,4,5,1,2}->l
SortA l
On obtient {1,1,1,1,2,2,4,5}
Ensuite, la première For
Je lis l[1], soit 1.
Deuxième For.
Je lis l[2], soit1
l[1]=[l2] donc n=1.
Fin de l'itération du deuxième for, la condition de sortie de deuxième for n'est pas remplie (car l[2]=l[1])
Ensuite, le for lis le l[3], donc 1
Pareil que précédemment. On a donc n=2
Nouvelle itération de deuxième boucle.
On a l[4]=2
l[4] != l[1] DONC n=2 et pas 3
Ensuite, vu que la condition de sortie est respectée, EXIT.
Ensuite je coupe la liste, et j'obtient
{1,2,5,4,5,1,2}->l

Et pareil pour chaque élement.

j'sais pas si c'est clair :s