def partition(Tab, P):
c = 0; j = 0
def dessin():
return (sum(point((i,v), size=40,
color="green" if P(v) else "red")
for i,v in enumerate(tab))
+ vert(c, Tab, "green") + vert(j, Tab))
yield "Start", dessin()
c = 0
while c < len(Tab) and P(Tab[c]):
c +=1
yield "c=%i"%c, dessin()+vert(c, Tab, "green")
for j in range(c+1, len(Tab)):
yield ("c=%i, j=%i"%(c, j), dessin())
if P(Tab[j]):
Tab[c], Tab[j] = Tab[j], Tab[c]
c +=1
yield ("c=%i, j=%i"%(c, j), dessin())
yield ("Retour %i"%c,
dessin()+vert(c-1/2, Tab, "blue"))