diff --git a/Sources/CoreLibrary/Code.cs b/Sources/CoreLibrary/Code.cs
index 0c6dc64..137fd3f 100644
--- a/Sources/CoreLibrary/Code.cs
+++ b/Sources/CoreLibrary/Code.cs
@@ -1,186 +1,178 @@
-using CoreLibrary.Exceptions;
-
-namespace CoreLibrary
-{
- ///
- /// Représente un code composé de jetons.
- ///
- public class Code
- {
- private readonly Jeton?[] lesJetons;
-
- ///
- /// Obtenir le nombre de jetons dans le code.
- ///
- public int NbJetons { get; private set; } = 0;
-
- ///
- /// Initialise une nouvelle instance de la classe avec la longueur de code spécifiée.
- ///
- /// La longueur du code.
- /// Levée lorsque la longueur du code spécifiée est inférieure ou égale à zéro.
- public Code(int tailleCode)
- {
- if(tailleCode <= 0)
- {
- throw new TailleCodeException(tailleCode);
- }
-
- lesJetons = new Jeton?[tailleCode];
- }
-
- ///
- /// Initialise une nouvelle instance de la class avec les jetons spécifiés.
- ///
- /// Les jetons pour initaliser le code.
- /// Levée lorsque la collection de jetons spécifiée est vide.
- public Code(IEnumerable jetons)
- {
- if (!jetons.Any())
- {
- throw new TailleCodeException(jetons.Count());
- }
-
- lesJetons = new Jeton?[jetons.Count()];
- foreach(Jeton jeton in jetons)
- {
- AjouterJeton(jeton);
- }
- }
-
- ///
- /// Ajoute un jeton au code.
- ///
- /// Le jeton à ajouter
- /// Levée lorsque le code est plein.
- public void AjouterJeton(Jeton jeton)
- {
- if (NbJetons == TailleMaximale())
- {
- throw new CodeCompletException();
- }
-
- lesJetons[NbJetons++] = jeton;
- }
-
- ///
- /// Supprime le dernier jeton ajouté au code.
- ///
- /// Levée lorsque le code est vide.
- public void SupprimerDernierJeton()
- {
- if(NbJetons == 0)
- {
- throw new CodeVideException();
- }
-
- lesJetons[--NbJetons] = null;
- }
-
- ///
- /// Récupère le jeton à l'indice spécifié dans le code.
- ///
- /// L'indice du jeton a récupéré.
- /// Le jeton situé à l'indice spécifié.
- /// Levée lorsque l'indice est supérieur à la taille maximale du code, inférieur à 0 ou qu'il n'y a pas de jeton à l'indice spécifié
- public Jeton RecupererJeton(int indice)
- {
- if(indice < 0 || indice >= TailleMaximale())
- throw new IndiceCodeException(indice, NbJetons-1);
-
- Jeton? jeton = lesJetons[indice];
-
- if (!jeton.HasValue)
- throw new IndiceCodeException(indice, NbJetons-1);
-
- return jeton.Value;
- }
-
- ///
- /// Récupère une énumération des jetons dans le code.
- ///
- /// Enumération des jetons du code
- public IEnumerable Jetons()
- {
- return lesJetons;
- }
-
-
- ///
- /// Vérifie si le code est complet.
- ///
- /// True si le code est complet, sinon False.
- public bool EstComplet()
- {
- return NbJetons == lesJetons.Length;
- }
-
- ///
- /// Recupère la taille maximal du code.
- ///
- /// Taille maximal du code.
-
- public int TailleMaximale()
- {
- return lesJetons.Length;
- }
-
- ///
- /// Compare le code avec un autre code et génère des indcateurs de correspondance.
- ///
- /// Le code à comparer avec le code actuel
- /// Enumération d'indicateurs de correspondance entre les deux codes.
- public IEnumerable Comparer(Code autreCode)
- {
- // Mon code est le code correct, l'autre code est celui qui teste
-
- Indicateur[] indicateurs = [];
-
- if (!autreCode.EstComplet())
+using CoreLibrary.Exceptions;
+
+namespace CoreLibrary
+{
+ ///
+ /// Représente un code composé de jetons.
+ ///
+ public class Code
+ {
+ private readonly Jeton?[] lesJetons;
+
+ ///
+ /// Obtenir le nombre de jetons dans le code.
+ ///
+ public int NbJetons { get; private set; } = 0;
+
+ ///
+ /// Initialise une nouvelle instance de la classe avec la longueur de code spécifiée.
+ ///
+ /// La longueur du code.
+ /// Levée lorsque la longueur du code spécifiée est inférieure ou égale à zéro.
+ public Code(int tailleCode)
+ {
+ if(tailleCode <= 0)
+ {
+ throw new TailleCodeException(tailleCode);
+ }
+
+ lesJetons = new Jeton?[tailleCode];
+ }
+
+ ///
+ /// Initialise une nouvelle instance de la class avec les jetons spécifiés.
+ ///
+ /// Les jetons pour initaliser le code.
+ /// Levée lorsque la collection de jetons spécifiée est vide.
+ public Code(IEnumerable jetons)
+ {
+ if (!jetons.Any())
+ {
+ throw new TailleCodeException(jetons.Count());
+ }
+
+ lesJetons = new Jeton?[jetons.Count()];
+ foreach(Jeton jeton in jetons)
+ {
+ AjouterJeton(jeton);
+ }
+ }
+
+ ///
+ /// Ajoute un jeton au code.
+ ///
+ /// Le jeton à ajouter
+ /// Levée lorsque le code est plein.
+ public void AjouterJeton(Jeton jeton)
+ {
+ if (NbJetons == TailleMaximale())
+ {
+ throw new CodeCompletException();
+ }
+
+ lesJetons[NbJetons++] = jeton;
+ }
+
+ ///
+ /// Supprime le dernier jeton ajouté au code.
+ ///
+ /// Levée lorsque le code est vide.
+ public void SupprimerDernierJeton()
+ {
+ if(NbJetons == 0)
+ {
+ throw new CodeVideException();
+ }
+
+ lesJetons[--NbJetons] = null;
+ }
+
+ ///
+ /// Récupère le jeton à l'indice spécifié dans le code.
+ ///
+ /// L'indice du jeton a récupéré.
+ /// Le jeton situé à l'indice spécifié.
+ /// Levée lorsque l'indice est supérieur à la taille maximale du code, inférieur à 0 ou qu'il n'y a pas de jeton à l'indice spécifié
+ public Jeton RecupererJeton(int indice)
+ {
+ if(indice < 0 || indice >= TailleMaximale())
+ throw new IndiceCodeException(indice, NbJetons-1);
+
+ Jeton? jeton = lesJetons[indice];
+
+ if (!jeton.HasValue)
+ throw new IndiceCodeException(indice, NbJetons-1);
+
+ return jeton.Value;
+ }
+
+ ///
+ /// Récupère une énumération des jetons dans le code.
+ ///
+ /// Enumération des jetons du code
+ public IEnumerable Jetons()
+ {
+ return lesJetons;
+ }
+
+
+ ///
+ /// Vérifie si le code est complet.
+ ///
+ /// True si le code est complet, sinon False.
+ public bool EstComplet()
+ {
+ return NbJetons == lesJetons.Length;
+ }
+
+ ///
+ /// Recupère la taille maximal du code.
+ ///
+ /// Taille maximal du code.
+
+ public int TailleMaximale()
+ {
+ return lesJetons.Length;
+ }
+
+ ///
+ /// Compare le code avec un autre code et génère des indcateurs de correspondance.
+ ///
+ /// Le code à comparer avec le code actuel
+ /// Enumération d'indicateurs de correspondance entre les deux codes.
+ public IEnumerable Comparer(Code autreCode)
+ {
+ // Mon code est le code correct, l'autre code est celui qui teste
+
+ Indicateur[] indicateurs = [];
+
+ if (!autreCode.EstComplet())
return indicateurs;
- Jeton?[] mesJetons = Jetons().ToArray();
- Jeton?[] sesJetons = autreCode.Jetons().ToArray();
-
- for (int i = 0; i < mesJetons.Length; ++i)
- {
- Jeton? monJeton = mesJetons[i];
- Jeton? sonJeton = sesJetons[i];
-
- if (monJeton.HasValue && sonJeton.HasValue && monJeton.Value.Couleur.Equals(sonJeton.Value.Couleur))
- {
- indicateurs = indicateurs.Append(Indicateur.BONNEPLACE).ToArray();
- mesJetons[i] = null;
- sesJetons[i] = null;
- }
- }
-
-
- for (int i = 0; i < sesJetons.Length; ++i)
- {
- Jeton? sonJeton = sesJetons[i];
-
- if (sonJeton.HasValue)
- {
- for (int j = 0; j < mesJetons.Length; ++j)
- {
- Jeton? monJeton = mesJetons[j];
-
- if (monJeton.HasValue && sonJeton.Value.Couleur.Equals(monJeton.Value.Couleur))
- {
- indicateurs = indicateurs.Append(Indicateur.BONNECOULEUR).ToArray();
- mesJetons[j] = null;
- sesJetons[i] = null;
- break;
- }
-
- }
- }
- }
-
- return indicateurs;
- }
- }
-}
-
-
+ List mesJetons = new List(Jetons());
+ List sesJetons = new List(autreCode.Jetons());
+
+ for (int i = 0; i < mesJetons.Count; ++i)
+ {
+ Jeton? monJeton = mesJetons[i];
+ Jeton? sonJeton = sesJetons[i];
+
+ if (monJeton.HasValue && sonJeton.HasValue && monJeton.Value.Couleur.Equals(sonJeton.Value.Couleur))
+ {
+ indicateurs = indicateurs.Append(Indicateur.BONNEPLACE).ToArray();
+ mesJetons[i] = null;
+ sesJetons[i] = null;
+ }
+ }
+
+
+ for (int i = 0; i < sesJetons.Count; ++i)
+ {
+ Jeton? sonJeton = sesJetons[i];
+
+
+
+ if (sonJeton.HasValue && mesJetons.Contains(sonJeton.Value))
+ {
+ indicateurs = indicateurs.Append(Indicateur.BONNECOULEUR).ToArray();
+ mesJetons[mesJetons.IndexOf(sonJeton)] = null;
+ sesJetons[i] = null;
+ }
+ }
+
+ return indicateurs;
+ }
+ }
+}
+
+