Skip to content

3 fonctionnalites_supplementaires

Jimmy DORE edited this page Jan 13, 2016 · 9 revisions

L'option Tuto

Nous avons décidé d'ajouter une option tuto à poqb.py afin d'avoir un tutoriel pour résoudre le cube plus facilement. En plus de la suite de mouvements à effectuer pour résoudre le cube, on affiche l'état du cube à chaque mouvement.

Capture_d_écran_2016-01-13_à_21.27.38

L'animation ASCII (complément du tuto)

A défaut d'un un visualiseur 3D, nous avons décidé de réaliser une animation ascii en sortie dans le terminal afin que l'utilisateur aie une vue claire du mouvement qu'il doit effectuer à chaque étape pour résoudre son rubik's cube.

animation

À lancer sous Unix avec :

python poqb.py --tuto --moves [--auto] [--speed 1]

La vitesse par défaut du tuto en mode auto pour l'utilisateur est de 0.5 mouvements/s, ce qui nous semble parfait pour une résolution optimale, mais si l'utilisateur est plus à l'aise avec la manipulation de son cube, ou au contraire a plus de mal, il a la possibilité d'augmenter ou de diminuer la vitesse via le param --speed <speed>

Heuristique

Chaque fonction de l'algorithme CFOP cherche une suite de mouvements à effectuer afin de résoudre son étape pour obtenir à la fin un cube fini. On concatène ainsi à chaque étape les nouveaux mouvements aux anciens pour arriver à la liste de mouvements finaux.

Cependant nous nous sommes dit que cette concaténation pouvait entraîner la création de mouvements inutiles ! En effet si les mouvements issus de la première fonction se terminent par un mouvement U et que les mouvements issues de la deuxième fonction commencent par un mouvement U', par exemple, on crée deux mouvements inutiles (U U'). nous avons donc eu pour idée de créer un script qui chasserait les raccourcis à travers la chaîne de mouvements finale ! Vous pouvez voir les détails dans ce fichier heuristique.

Tests unitaires

Quelques tests unitaires ont été créés. Plus d'infos ici.

Ils nous ont notamment permis de tester la fonction de résolution algo_cfop() sur un grand nombre de cubes aléatoires. C'est notamment deux tests sur des jeux de 10 000 et de 100 000 cubes qui nous ont permis de détecter des erreurs.

Capture_d_écran_2016-01-13_à_18.21.01

Capture_d_écran_2016-01-13_à_18.21.18

Résultat du tests (en particulier algo_cfop() testé avec 1 million de cubes)