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);
}
}
}