def valeurs(pyromax): # crée les valeurs aléatoires pour l'équation while True: coefs = [Arithmetique.valeur_alea(-pyromax, pyromax) for i in range(6)] sgn = Arithmetique.valeur_alea(-1, 1) if sgn > 0: signe = "+" else: signe = "-" while True: while True: dens = [Arithmetique.valeur_alea(2, 9) for i in range(3)] if dens[0] != dens[1] and dens[0] != dens[2] and dens[1] != \ dens[2]: break ppcm = Arithmetique.ppcm(dens[0], Arithmetique.ppcm(dens[1], dens[2])) densprim = [ppcm // dens[i] for i in range(3)] if densprim[0] < 10 and densprim[1] < 10 and densprim[2] < \ 10: break nvxcoefs = [coefs[i] * densprim[i // 2] for i in range(6)] if (nvxcoefs[0] + nvxcoefs[2] * sgn) - nvxcoefs[4] != 0: break return (tuple(coefs), tuple(dens), tuple(densprim), (signe, sgn), tuple(nvxcoefs))
def valeurs_prod(): while 1: nba = Arithmetique.valeur_alea(101, 9999) if nba - (nba // 10) * 10: break puisa = Arithmetique.valeur_alea(-3, -1) while 1: nbb = Arithmetique.valeur_alea(101, 999) if nbb - (nbb // 10) * 10: break puisb = Arithmetique.valeur_alea(-3, -1) return (nba, nbb, puisa, puisb)
def valeurs_units(): """ renvoie les valeurs pour les conversions d'unités """ a = Arithmetique.valeur_alea(101, 999) p = random.randrange(-2, 0) unit = random.randrange(3) if unit: # mètres ou grammes, on peut utiliser les k imax = 7 else: # Litres, donc pas de kL imax = 6 div0 = random.randrange(imax + p) while 1: div1 = random.randrange(imax) if div0 != div1: break if not unit: # Litres, donc pas de kL donc on décale d'un rang div0, div1 = div0 + 1, div1 + 1 return (a, p, unit, div0, div1)
def valeurs_entier0(pyromax): # renvoie (coef0, coef1, coef2, carre0, carre1, carre2, b) a = carres[random.randrange(len(carres))] while True: b = random.randrange(2, pyromax) c = Arithmetique.valeur_alea(-pyromax, pyromax) if b != c and abs(c) != 1: break return (b, c, a)
def valeurs_entier0( pyromax): # renvoie (coef0, coef1, coef2, carre0, carre1, carre2, b) a = carres[random.randrange(len(carres))] while True: b = random.randrange(2, pyromax) c = Arithmetique.valeur_alea(-pyromax, pyromax) if b != c and abs(c) != 1: break return (b, c, a)
def valeurs_aRb0(pyromax): # renvoie (coef0, coef1, coef2, carre0, carre1, carre2, b) a = carres l = [Arithmetique.valeur_alea(-pyromax, pyromax) for dummy in range(3)] while True: t = [random.randrange(2, pyromax) for dummy in range(3)] if pyromax < 4 or t[0] != t[1] and t[0] != t[2] and t[1] != t[2]: break l.extend(t) l.append(a[random.randrange(len(a))]) return tuple(l)
def valeurs_aRb0( pyromax): # renvoie (coef0, coef1, coef2, carre0, carre1, carre2, b) a = carres l = [Arithmetique.valeur_alea(-pyromax, pyromax) for dummy in range(3)] while True: t = [random.randrange(2, pyromax) for dummy in range(3)] if pyromax < 4 or t[0] != t[1] and t[0] != t[2] and t[1] != t[2]: break l.extend(t) l.append(a[random.randrange(len(a))]) return tuple(l)
def valeurs10(nb): # renvoie nb valeur de chaque type : *10, /10, *0.1 l = [] for i in range(nb): if random.randrange(0, 1): l.append((Arithmetique.valeur_alea(111, 999) * 10 ** random.randrange(-3, 0), 10 ** (i + 1), '*')) else: l.append((10 ** (i + 1), Arithmetique.valeur_alea(111, 999) * 10 ** random.randrange(-3, 0), '*')) for i in range(nb): l.append((Arithmetique.valeur_alea(111, 999) * 10 ** random.randrange(-3, 0), 10 ** (i + 1), '/')) for i in range(nb): if random.randrange(0, 1): l.append((Arithmetique.valeur_alea(111, 999) * 10 ** random.randrange(-3, 0), 10 ** (-i - 1), '*')) else: l.append((10 ** (-i - 1), Arithmetique.valeur_alea(111, 999) * 10 ** random.randrange(-3, 0), '*')) return l
def valeurs_aPbRc(pyromax): # renvoie (coef0, coef1, coef2, carre0, carre1, carre2, b) while True: a = carres[random.randrange(len(carres))] b = carres[random.randrange(len(carres))] if a != b and Arithmetique.pgcd(a, b) != min(a, b): break while True: c = random.randrange(2, pyromax) d = Arithmetique.valeur_alea(-pyromax, pyromax) if c != d: break return (c, a, d, b)
def valeurs10(nb): # renvoie nb valeur de chaque type : *10, /10, *0.1 l = [] for i in range(nb): if random.randrange(0, 1): l.append((Arithmetique.valeur_alea(111, 999) * 10**random.randrange(-3, 0), 10**(i + 1), '*')) else: l.append((10**(i + 1), Arithmetique.valeur_alea(111, 999) * 10**random.randrange(-3, 0), '*')) for i in range(nb): l.append( (Arithmetique.valeur_alea(111, 999) * 10**random.randrange(-3, 0), 10**(i + 1), '/')) for i in range(nb): if random.randrange(0, 1): l.append((Arithmetique.valeur_alea(111, 999) * 10**random.randrange(-3, 0), 10**(-i - 1), '*')) else: l.append((10**(-i - 1), Arithmetique.valeur_alea(111, 999) * 10**random.randrange(-3, 0), '*')) return l
def valeurs_aPbRc( pyromax): # renvoie (coef0, coef1, coef2, carre0, carre1, carre2, b) while True: a = carres[random.randrange(len(carres))] b = carres[random.randrange(len(carres))] if a != b and Arithmetique.pgcd(a, b) != min(a, b): break while True: c = random.randrange(2, pyromax) d = Arithmetique.valeur_alea(-pyromax, pyromax) if c != d: break return (c, a, d, b)
def choix_valeurs(m): # crée les valeurs du systeme de la forme a1.x+b1.y=c1 ; a2.x+b2.y=c2 et renvoie ((a1, b1, c1), (a2, b2, c2), (x, y)) while True: c = [Arithmetique.valeur_alea(-m, m) for dummy in range(6)] if c[0] * c[3] - c[1] * c[2] and abs(c[0]) - 1 and abs(c[1]) - 1 and \ abs(c[2]) - 1 and abs(c[3]) - 1 and abs(c[1] * c[2] - c[0] * c[3]) - 1 and abs(c[0]) - abs(c[2]) and abs(c[1]) - abs(c[3]) and \ c[4] and c[5]: break # supprime des cas particuliers return ((c[0], c[1], c[0] * c[4] + c[1] * c[5]), (c[2], c[3], c[2] * c[4] + c[3] * c[5]), (c[4], c[5]))
def choix_valeurs( m ): # crée les valeurs du systeme de la forme a1.x+b1.y=c1 ; a2.x+b2.y=c2 et renvoie ((a1, b1, c1), (a2, b2, c2), (x, y)) while True: c = [Arithmetique.valeur_alea(-m, m) for dummy in range(6)] if c[0] * c[3] - c[1] * c[2] and abs(c[0]) - 1 and abs(c[1]) - 1 and \ abs(c[2]) - 1 and abs(c[3]) - 1 and abs(c[1] * c[2] - c[0] * c[3]) - 1 and abs(c[0]) - abs(c[2]) and abs(c[1]) - abs(c[3]) and \ c[4] and c[5]: break # supprime des cas particuliers return ((c[0], c[1], c[0] * c[4] + c[1] * c[5]), (c[2], c[3], c[2] * c[4] + c[3] * c[5]), (c[4], c[5]))
def valeurs(): nba = Arithmetique.valeur_alea(111, 99999) while 1: nbb = Arithmetique.valeur_alea(111, 99999) if nbb - (nbb // 10) * 10: break puisb = Arithmetique.valeur_alea(-2, 0) nbb = nbb * 10 ** puisb deca = [str(nba)[i] for i in range(len(str(nba)))] decb = [str(nbb)[i] for i in range(len(str(nbb)))] if random.randrange(2): (nba, deca, nbb, decb) = (nbb, decb, nba, deca) if deca.count('.'): posa = deca.index('.') else: posa = len(deca) if decb.count('.'): posb = decb.index('.') else: posb = len(decb) lavtvirg = max(posa, posb) laprvirg = max(len(deca) - posa, len(decb) - posb) return (nba, nbb, deca, decb, lavtvirg, laprvirg)
def valeurs(): nba = Arithmetique.valeur_alea(111, 99999) while 1: nbb = Arithmetique.valeur_alea(111, 99999) if nbb - (nbb // 10) * 10: break puisb = Arithmetique.valeur_alea(-2, 0) nbb = nbb * 10**puisb deca = [str(nba)[i] for i in range(len(str(nba)))] decb = [str(nbb)[i] for i in range(len(str(nbb)))] if random.randrange(2): (nba, deca, nbb, decb) = (nbb, decb, nba, deca) if deca.count('.'): posa = deca.index('.') else: posa = len(deca) if decb.count('.'): posb = decb.index('.') else: posb = len(decb) lavtvirg = max(posa, posb) laprvirg = max(len(deca) - posa, len(decb) - posb) return (nba, nbb, deca, decb, lavtvirg, laprvirg)
def plus(pyromax): (a, b) = (Arithmetique.valeur_alea(-pyromax, pyromax), Arithmetique.valeur_alea(-pyromax, pyromax)) return (a, b)
def div(pyromax): (a, b) = (Arithmetique.valeur_alea(-pyromax, pyromax), Arithmetique.valeur_alea(-pyromax, pyromax)) return (a * b, a)
def div(valeurmax): (a, b) = (Arithmetique.valeur_alea(1, valeurmax), Arithmetique.valeur_alea(1, valeurmax)) return (a * b, a)
def moins(valeurmax): (a, b) = (Arithmetique.valeur_alea(1, valeurmax), Arithmetique.valeur_alea(1, valeurmax)) return (a + b, a)
def plus(valeurmax): (a, b) = (Arithmetique.valeur_alea(1, valeurmax), Arithmetique.valeur_alea(1, valeurmax)) return (a, b)
def moins(pyromax): (a, b) = (Arithmetique.valeur_alea(-pyromax, pyromax), Arithmetique.valeur_alea(-pyromax, pyromax)) return (a + b, a)
def moins_dec(pyromax): (a, b) = (Arithmetique.valeur_alea(-10 * pyromax, 10 * pyromax) / 10.0, Arithmetique.valeur_alea(-10 * pyromax, 10 * pyromax) / 10.0) return (a + b, a)