Petite astuce pour la validation, si vous avez fait correspondre le tableau mélange avec le tableau ordonne (comme moi) de cette manière :
$num_piece_ordonnee = $tab[$num_piece_desordonnee];
construisez votre chaine de validation a partir de array_flip($tab), et non pas a partir de $tab.....
4-5 heures de boulot et 300lignes de php pour moi, première expérience avec GD...
Excellente épreuve, bravo au créateur.