Tout d’abord trier c’est bien.
Ensuite, le script ‘client.py’ a bien mâché le travail pour nous puisqu’il fallait écrire la fonction trier correctement. D’ailleurs le petit de code pouvait être trompeur. Car on ne sait pas dans quel ordre il fallait trier. Il se trouve que la commande comparer renvoie 1 si X et inférieur ou égal à Y. Donc on va chercher à trier de manière croissante.
J’ai pris la voie rapide avec un tri à bulle, j’aurais pu faire un beau qsort ou une belle dichotomie.
Bon, la fonction trier
devient :
def trier(N):
sorted = False
while not sorted:
sorted = True
for i in range(0, N-1):
if not comparer(i, i+1):
echanger(i, i+1)
sorted = False
On échange deux valeurs consécutives si la comparaison n’est pas bonne sur toutes entrées. Ceci fait “remonter” les valeurs les plus faibles en début de tableau (ça “bulle”). Si toutes les comparaisons sont bonnes, aucun échange ne s’effectue, le tableau est donc trié. On s’arrête.
On Change la ligne de définition HOST,PORT
pour interagir avec le docker mise en place.
On lance le script client.py ainsi mis à jour :
$ python3 client.py
[+] Opening connection to localhost on port 4000: Done
Le flag est : FCSC{e687c4749f175489512777c26c06f40801f66b8cf9da3d97bfaff4261f121459}
[*] Closed connection to localhost port 4000
Tada !