using System; namespace mm { class MainClass { /* Retourne une combinaison aléatoire de nbChiffres compris * entre 1 et chiffreMax * */ public static int[] creerCombinaison(int nbChiffres, int chiffreMax, bool doublonsAutorises) { if (!doublonsAutorises && nbChiffres > chiffreMax) { Console.WriteLine("Impossible de créer la combinaison, " + "le nombre de chiffres ne peut être supérieur au chiffre " + "max que si les doublons sont autorises."); Environment.Exit(0); } int[] combinaison = new int[nbChiffres]; bool [] numerosSortis = new bool[chiffreMax]; if (!doublonsAutorises) for (int i = 0 ; i < chiffreMax ; i++) numerosSortis[i] = false; Random r = new Random(); for (int i = 0 ; i < nbChiffres ; i++) { do { combinaison[i] = r.Next()%chiffreMax + 1; } while(!doublonsAutorises && numerosSortis[combinaison[i] - 1]); numerosSortis[combinaison[i] - 1] = true; } return combinaison; } /* * Retourne vrai ssi pour tout i, 1 <= t[i] <= chiffreMax * */ public static bool infChiffreMax(int [] t, int chiffreMax) { foreach(int v in t) if(v <= 0 || v > chiffreMax) return false; return true; } /* * retourne un tableau contenant les nbChiffres saisis dans la chaîne s * la chaîne s doit contenir les chiffres de la combinaison séparés par * des espaces. Retourne null si le tableau est impossible à parser. * */ public static int[] parseCombinaison(string s, int nbChiffres) { int[] t = new int[nbChiffres]; int indiceS = 0; int indiceT = 0; int n = s.Length; while(indiceS < n && indiceT < nbChiffres) { if (s[indiceS] == ' ') indiceT++; else t[indiceT] = t[indiceT]*10 + (int)(s[indiceS] - '0'); indiceS++; } if (indiceT == nbChiffres-1 && indiceS == n) return t; else { Console.WriteLine("Le nombre de valeurs saisies ne correspond pas."); return null; } } /* * Retourne le nombre de chiffres identiques dans les deux tableaux * ne compare que les valeurs de même indice, les deux tableaux * doivent être de même longueur. * */ public static int calculeBienPlaces(int[] a, int[] b) { int n = a.Length; int resultat = 0; for (int i = 0 ; i < n ; i++) if (a[i] == b[i]) resultat++; return resultat; } /* * Retourne un tableau x de chiffreMax éléments tel que x[i] est * le nombre d'occurrences de i dans t. */ public static int[] nbOccurrences(int[] t, int chiffreMax) { int[] x = new int[chiffreMax]; int n = t.Length; for (int i = 0 ; i