Necesito generar 3 fracciones con estas reglas:
Ya tengo una función para generar numeradores únicos
static randomUnique(range: number, count: number) { let nums: number[] = []; while (nums.length < count) { nums.push(Math.floor(Math.random() * (range) + 1)); } return [...nums]; }y una función para verificar si la fracción es reducible
static isSimplified(numOne: number, numTwo: number) { let numerator = numOne; let denominator = numTwo; for (let i = Math.max(numOne, numTwo); i > 1; i--) { if ((numOne % i === 0) && (numTwo % i === 0)) { numOne /= i; numTwo /= i; } } return numOne === numerator && numTwo === denominator ? false : true; } El problema es que los numeradores generados pueden ser reducibles, así que cambié la función randomUnique a esta
static randomUnique(denominator: number, count: number) { let nums: number[] = []; let numerator = 0; while ((nums.length < count)) { numerator = Math.floor(Math.random() * (denominator * 3) + 1); if (!FractionAxisLogic.isSimplified(numerator, denominator)) nums.push(numerator); } return [...nums]; } Y ahora el problema de que los numerators no son únicos
¿Cómo puedo arreglar esto por favor?
Arreglé esto cambiando let nums: number[] = []; a usar javascript Set() que es un objeto para almacenar valores únicos.