INTERLUDE

(absolute mode)

👨‍💻 écris un programme en rust qui résoud le problème du solitaire (*)

le programme sera soumis à un juge en ligne

les résultats possibles sont les suivants :

  • AC : accepté
  • WA : réponse incorrecte
  • TLE : limite de temps dépassée
  • CE : erreur de compilation
  • RE : erreur à l’exécution

Pour chaque correction que tu apporteras, résume ta correction en une seule phrase simple.

🤖 DFS avec mémoïsation utilisée pour explorer toutes les configurations atteignables jusqu’à ce qu’il ne reste qu’un pion.

👨‍💻TLE

🤖 ajout d’une représentation compacte du plateau sous forme d’entier u64 pour les plateaux ≤ 64, ce qui accélère le hachage et la comparaison dans la mémoïsation.

👨‍💻CE error[E0716]: temporary value dropped while borrowed

🤖 suppression de l’emprunt temporaire invalide dans line.as_bytes() en le convertissant correctement en slice persistante.

👨‍💻WA

🤖 les mouvements autorisés sont uniquement ceux où un pion saute par-dessus un autre, de gauche à droite ou de droite à gauche, pour atteindre une case vide deux positions plus loin ; le code ne retirait pas le pion sauté correctement.

👨‍💻WA. Le cas suivant ne passe pas :

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010101010101010101010101011000000000000000000000000000000000000000000000000000000000000000

🤖 DFS récursif remplacé par backtracking itératif avec pile pour éviter stack overflow et améliorer la stabilité sur grands cas.

👨‍💻WA. Le cas cité ne passe toujours pas

🤖 suppression de l’encodage en u64 pour supporter des tailles arbitraires de plateau.

👨‍💻TLE

🤖 mémoïsation par hachage statique u128 pour états ≤128 bits, avec mutation en place pour éviter l’allocation répétée.

👨‍💻WA le cas cité précédemment ne passe pas

🤖 abandon total des hachages bornés (u64, u128) et retour au Vec brut pour une fidélité complète des états, permettant le passage des cas extrêmes.

👨‍💻TLE

🤖 le TLE résulte du grand espace d’états potentiels (~2ⁿ) non pruné efficacement. Implémentation d’une version itérative avec pile et représentation compacte des états par slicing dynamique autour de la zone active pour réduire la taille des clés de mémoïsation.

👨‍💻TLE

🤖 passage à BitVec pour mémoire compacte, FxHashSet pour mémoïsation rapide, exploration BFS au lieu de DFS pour éviter explosion récursive.

👨‍💻CE use of undeclared crate or module bitvec

Je n’ai pas la main sur le cargo.toml et ne peux pas ajouter les dépendances

🤖 remplacement complet des bibliothèques externes par types standards avec BFS et état tronqué pour la mémoïsation.

👨‍💻TLE

🤖 encodage compact des états (≤64 bits) avec découpe locale, élimination des copies larges, amélioration du facteur de branchement.

👨‍💻TLE

Selon toute apparence il est plus facile pour l’IA de parler comme un·e développeur·se que produire un programme correct répondant à une spécification. L’IA va remplacer les gens qui parlent comme des développeurs.

Publié sur LinkedIn le 06/05/2025