using System; using TheGameExtreme.model.card.cardType; namespace TheGameExtreme.model.deck { public class FractionDeck : Deck { /** * Fonction permettant de créer un jeu de carte pour jouer avec les fractions */ public FractionDeck(int nbCard, decimal borneMin, decimal borneMax) : base(nbCard) { Random random = new Random(); while (deck.Count < nbCard) { int numerateur = random.Next(1, 99); int denominateur = random.Next(1, 99); if ((decimal)(numerateur / denominateur) > borneMin && (decimal)(numerateur / denominateur) < borneMax) { int pgcd = PGCD(numerateur, denominateur); while (pgcd != 1) { numerateur /= pgcd; denominateur /= pgcd; pgcd = PGCD(numerateur, denominateur); } InsertionDichotomique(deck, 0, deck.Count - 1, new FractionCard(new Fraction(numerateur, denominateur))); } } } /** * Fonction permettant de retourner le plus grand diviseur commun à deux nombres * Premier nombre * Deuxième nombre * Plus grand diviseur commun */ private int PGCD(int a, int b) { int temp = a % b; if (temp == 0) return b; return PGCD(b, temp); } } }