Ragnulf merge requestshttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests2015-12-01T19:59:42Zhttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/1Structure du cube #42015-12-01T19:59:42ZGuillaume CLOCHARDStructure du cube #4[WIP]
*Ne pas merger tout de suite, le travail sur les rotations peut se faire dans cette branche et celui sur la lecture dans une branche créée à partir de 547c5734.*
Yo :v:
Voilà une classe Cube (dans `Cube.py`) implémentée ...[WIP]
*Ne pas merger tout de suite, le travail sur les rotations peut se faire dans cette branche et celui sur la lecture dans une branche créée à partir de 547c5734.*
Yo :v:
Voilà une classe Cube (dans `Cube.py`) implémentée comme statué dans #4.
Voir la fin du fichier `poqb.py` pour exemple d'utilisation de la classe (en particulier pour toi Jimmy @E134177U pour commencer la lecture de l'entrée).
:warning: Pour installer `numpy` sur votre machine :
```bash
//vous utilisez python3
(sudo -H) pip3 install numpy
```
cc @E134067A @E134177U @E136732X @E134323D @E134636T @E132397Khttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/2Lecture entree #52015-12-03T13:35:27ZJimmy DORELecture entree #5#5
Voici la fonction de la lecture d'entree.
A partir d'une chaîne de caractère qui a pour schéma les 54 facettes du cube ("OGRBWYBGBGYYOYOWOWGRYOOOBGBRRYRBWWWRBWYGROWGRYBRGYWBOG"), la fonction va prendre cette chaîne
et renvoyer ...#5
Voici la fonction de la lecture d'entree.
A partir d'une chaîne de caractère qui a pour schéma les 54 facettes du cube ("OGRBWYBGBGYYOYOWOWGRYOOOBGBRRYRBWWWRBWYGROWGRYBRGYWBOG"), la fonction va prendre cette chaîne
et renvoyer un cube initialisé avec les bonnes valeurs.
La classe Cube se trouve dans !1 , réalisé par @E132397K
---
La fonction est entièrement fonctionelle, mais une optimisation est possible
:v: https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/3Getter facette2015-12-03T15:36:22ZQuentin BILLAUDGetter facetteNouveau Getter qui permet de savoir la couleur d'une facette en fonction du petit cube et de l'indice dans celui-ci.Nouveau Getter qui permet de savoir la couleur d'une facette en fonction du petit cube et de l'indice dans celui-ci.Quentin BILLAUDQuentin BILLAUDhttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/5Fix Cube.cube_contient_couleur()2015-12-06T16:54:08ZGuillaume CLOCHARDFix Cube.cube_contient_couleur()Petites modifs de `Cube.cube_contient_couleur()` :
- fix pb si `petit_cube` est un coin
- ajout doc
- refactor pour faire moins de `if`
Merge si ça te convient Jimmy @E134177U :raising_hand: Petites modifs de `Cube.cube_contient_couleur()` :
- fix pb si `petit_cube` est un coin
- ajout doc
- refactor pour faire moins de `if`
Merge si ça te convient Jimmy @E134177U :raising_hand: https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/6Refactor Cube.scramble()2015-12-06T17:10:38ZGuillaume CLOCHARDRefactor Cube.scramble()Refactor `Cube.scramble()` pour économiser des lignes et rester DRY.
Merge si ça te convient Jimmy @E134177U. :koala: Refactor `Cube.scramble()` pour économiser des lignes et rester DRY.
Merge si ça te convient Jimmy @E134177U. :koala: https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/7Fix cross2015-12-07T07:46:28ZGuillaume CLOCHARDFix crossPetit refactor de `cross__facile()`. La logique reste absolument la même, c'est juste cosmétique.
- délocalisation de `croix_valide()` dans `utils.py`
- création de `Cube.mouvements()` qui fait comme `Cube.scramble()` mais avec une l...Petit refactor de `cross__facile()`. La logique reste absolument la même, c'est juste cosmétique.
- délocalisation de `croix_valide()` dans `utils.py`
- création de `Cube.mouvements()` qui fait comme `Cube.scramble()` mais avec une liste en paramètre
- Nettoyage doc sur `cross_facile()`
- Utilisation de `Cube.mouvements()` dans `cross_facile()` pour gagner en nombre de lignes et garder plus facilement la liste des mouvements effectués.
- `cross_facile()` ne prend plus de liste de mouvements mais renvoie `(<Cube>, <Liste de mouvements>)`
J'espère que l'utilisation de `Cube.mouvements()` n'impacte pas les perfs. Je vais regarder ça.
Merge si ça te convient Jimmy @E134177U. https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/9Rotations doubles2015-12-11T11:39:07ZArnaud LangelierRotations doublesAjout des rotations doubles dans la modélisation du cube
Edit : modification de la fonction mouvement pour la prise en compte des nouvelles rotationsAjout des rotations doubles dans la modélisation du cube
Edit : modification de la fonction mouvement pour la prise en compte des nouvelles rotationsArnaud LangelierArnaud Langelierhttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/8Délocalisation de ftl_valide et refactor2015-12-11T12:44:50ZGuillaume CLOCHARDDélocalisation de ftl_valide et refactorJ'ai délocalisé `ftl_valide()` dans `utils.py` et refactor comme `cross_valide()` pour éviter la cascade de `if`.
Merge si ça te convient toujours Tom @E134636T J'ai délocalisé `ftl_valide()` dans `utils.py` et refactor comme `cross_valide()` pour éviter la cascade de `if`.
Merge si ça te convient toujours Tom @E134636T https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/10Pll2015-12-12T10:53:51ZJimmy LEBLANCPllFusion des branches pll et algo_resolution afin d'ajouter la première version de la fonction pll (dernière étape de la résolution CFOP) à l'algorithme finalFusion des branches pll et algo_resolution afin d'ajouter la première version de la fonction pll (dernière étape de la résolution CFOP) à l'algorithme finalhttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/11Fusion PLL -> Algo_resolution 2015-12-14T17:58:11ZJimmy LEBLANCFusion PLL -> Algo_resolution Fusion de pll dans la branche algo_resolution puisqu'on a un algorithme entier fonctionnel Fusion de pll dans la branche algo_resolution puisqu'on a un algorithme entier fonctionnel https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/4Algo resolution2015-12-15T10:35:12ZJimmy DOREAlgo resolution### Tâches
- [x] Cross (Jimmy @E134177U)
- [x] Trouver la croix selon n'importe quelle configuration
- [x] Code commenté abondamment
- [x] Effectuer de nombreux tests
- [ ] Minimiser le nombre de mouvements au maxi...### Tâches
- [x] Cross (Jimmy @E134177U)
- [x] Trouver la croix selon n'importe quelle configuration
- [x] Code commenté abondamment
- [x] Effectuer de nombreux tests
- [ ] Minimiser le nombre de mouvements au maximum : meilleure optimisation du code
- [x] F2L (Tom @E134636T)
- [x] OLL (Quentin @E134323D)
- [x] PLL (Jimmy @E136732X)
---
### Cross
La première partie de l'algo de résolution est fonctionnelle :
trouver la première croix (cf. https://www.youtube.com/watch?v=VwvGWNfcgs8 pour savoir quelle croix)
Plusieurs tâches ont été effectuées pour y arriver:
- Une méthode permettant de mélanger le cube en fonction d'une suite de mouvements a aussi été créée dans la structure du cube. (`scramble()`)
- Une méthode permettant de déterminer si un cube arrête ou un cube coin contient certaines couleurs (peu importe l'ordre) a aussi été créée dans la structure du cube
- Une batterie de tests sur plus de 150 configurations possibles du cube
a été effectué. (Nouveau fichier test.py, contenant la liste des mouvements)
- L'algo pour trouver la croix a évidemment été réalisé
:v:https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/13[WIP] Résolution du cube de A-Z2016-01-04T17:48:56ZGuillaume CLOCHARD[WIP] Résolution du cube de A-ZNouveautés :
- [x] recevoir un cube sous forme de chaîne de la part de l'utilisateur (ou si non présent, utiliser le cube par défaut)
- [x] lire le cube, retourner les erreurs si il y en a
- [x] résoudre le cube, retourner les erreurs ...Nouveautés :
- [x] recevoir un cube sous forme de chaîne de la part de l'utilisateur (ou si non présent, utiliser le cube par défaut)
- [x] lire le cube, retourner les erreurs si il y en a
- [x] résoudre le cube, retourner les erreurs si il y en a
Bonus :
- [ ] ajout d'un argument `--tuto` qui applique step by step la résolution du cube dans le terminalArnaud LangelierArnaud Langelierhttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/14Ajout du tuto 2016-01-05T18:01:22ZArnaud LangelierAjout du tuto Ajout d'une option '--tuto' qui permet de voir la résolution coup par coup du rubik's cube (dans un terminal)
On peut aussi utiliser l'option '--speed' pour gérer la vitesse du tutoAjout d'une option '--tuto' qui permet de voir la résolution coup par coup du rubik's cube (dans un terminal)
On peut aussi utiliser l'option '--speed' pour gérer la vitesse du tutoGuillaume CLOCHARDGuillaume CLOCHARDhttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/15Amélioration du tuto 2016-01-07T11:57:37ZArnaud LangelierAmélioration du tuto Ajout de la progression dans le tuto, autres petits détails Ajout de la progression dans le tuto, autres petits détails Guillaume CLOCHARDGuillaume CLOCHARDhttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/17Petite amélioration du tuto et de la sortie en général2016-01-08T11:27:11ZArnaud LangelierPetite amélioration du tuto et de la sortie en généralLes rotations en cours pendant le tuto sont maintenant traduites (les Xi deviennent X').
On indique maintenant à l'user comment orienter son cube avant d'appliquer les mouvements.Les rotations en cours pendant le tuto sont maintenant traduites (les Xi deviennent X').
On indique maintenant à l'user comment orienter son cube avant d'appliquer les mouvements.Guillaume CLOCHARDGuillaume CLOCHARDhttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/16Prise en charge des cubes insolvables 2016-01-08T16:12:42ZGuillaume CLOCHARDPrise en charge des cubes insolvables Après modifications de Jimmy, un cube est insolvable si il ressort de l'algo non résolu.
Voir #6.
:v: Après modifications de Jimmy, un cube est insolvable si il ressort de l'algo non résolu.
Voir #6.
:v: https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/18Mise à jour fonction solve()2016-01-08T18:09:05ZGuillaume CLOCHARDMise à jour fonction solve()Mise à jour fonction solve() pour que `poqb` puisse être utilisé comme un module avec la signature imposée.
```python
import poqb
print(poqb.solve('OGRBWYBGBGYYOYOWOWGRYOOOBGBRRYRBWWWRBWYGROWGRYBRGYWBOG'))
```Mise à jour fonction solve() pour que `poqb` puisse être utilisé comme un module avec la signature imposée.
```python
import poqb
print(poqb.solve('OGRBWYBGBGYYOYOWOWGRYOOOBGBRRYRBWWWRBWYGROWGRYBRGYWBOG'))
```https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/19Écriture du REAME2016-01-08T19:06:35ZGuillaume CLOCHARDÉcriture du REAME[Voir le fichier](https://gitlab.univ-nantes.fr/E132397K/Ragnulf/blob/documentation/README.md )[Voir le fichier](https://gitlab.univ-nantes.fr/E132397K/Ragnulf/blob/documentation/README.md )https://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/20fix option '--colors'2016-01-08T21:30:45ZArnaud Langelierfix option '--colors'Passage de l'option colors dans la fonction readArg() et gestion de cette nouvelle option dans wintermcolors()Passage de l'option colors dans la fonction readArg() et gestion de cette nouvelle option dans wintermcolors()Guillaume CLOCHARDGuillaume CLOCHARDhttps://gitlab.univ-nantes.fr/E132397K/Ragnulf/-/merge_requests/21Amélioration README2016-01-09T13:40:55ZGuillaume CLOCHARDAmélioration README- Plus de lisibilité de la doc des arguments de `poqb.py`
- Ajout début d'exemple du retour de solve()- Plus de lisibilité de la doc des arguments de `poqb.py`
- Ajout début d'exemple du retour de solve()