def PythagoreSchema(parametre): ## ---Initialisation--- question = u"Calculer la mesure du 3\\up{eme} côté :" exo = [ ] cor = [ ] ## ---Calcul des paramètres--- #nom nom_sommet = choix_points(3) #mesure couples_pythagore = trouve_couples_pythagore(parametre[0]) choix = random.randrange(3) mesure_temp = couples_pythagore[random.randrange(len(couples_pythagore))] mesure_sujet = [] mesure_corrige = [] for i in range(len(mesure_temp)): if i == choix: mesure_sujet.append("\\unit{\\ldots}{cm}") mesure_corrige.append("\\boxed{\\unit{%s}{cm}}" %mesure_temp[i]) else: mesure_sujet.append("\\unit{%s}{cm}" %mesure_temp[i]) mesure_corrige.append("\\unit{%s}{cm}" %mesure_temp[i]) ## ---Redaction--- tex_figure(exo,nom_sommet,mesure_sujet) tex_figure(cor,nom_sommet,mesure_corrige) return (exo, cor, question)
def exo_trigo(parametre): question = "" exo = [] cor = [] s = choix_points(6) n1 = cotes_sommets(s[0:3]) n2 = cotes_sommets(s[3:6]) v = valeurs_trigo() (l1, l2) = enonce_trigo(((s[0:3], n1, v[0]), (s[3:6], n2, v[1]))) exo.extend(l1) cor.extend(l2) return (exo, cor, question)
def Nommer(parametre): ## ---Initialisation--- question = u"Donner l'écriture de l'objet rouge :" exo = [] cor = [] ## ---Calcul des paramètres--- nom_point = choix_points(5) coordonnee_point = coordonnees_points() (duo_point,nom_duo_point,nature_duo_point) = carateristique_duo_point(nom_point[0:4]) choix_duo_point = random.randrange(len(duo_point)) ## ---Redaction--- tex_figure(exo,nom_point,coordonnee_point,duo_point,nature_duo_point,choix_duo_point) tex_figure(cor,nom_point,coordonnee_point,duo_point,nature_duo_point,choix_duo_point) cor.append("\\begin{center}") cor.append(u"L'objet rouge s'écrit \\fbox{%s}" % nom_duo_point[choix_duo_point]) cor.append("\\end{center}") return (exo, cor, question)
def exo_thales(parametre): question = "" exo = [] cor = [] noms = choix_points(5) # les noms des sommets while True: valeurs = valeurs_thales(70) # les longueurs en mm if valeurs: break exo.append(tex_fig_thales(noms, valeurs)) exo.append(tex_enonce_thales(noms, valeurs)) cor.append(tex_fig_thales(noms, valeurs)) cor.append(tex_enonce_thales(noms, valeurs)) cor.append(tex_resolution_thales0(noms, valeurs)) cor.append(tex_resolution_thales1(noms, valeurs)) cor.append(tex_resolution_thales2(noms, valeurs)) cor.append(tex_resolution_thales3(noms, valeurs)) return (exo, cor, question)
def exo_reciproque_pythagore(parametre): question = "" exo = [] cor = [] while True: longueurs = couples_pythagore[random.randrange(len(couples_pythagore))] longueurs = [longueurs[i] / 10.0 for i in range(3)] if inegalite_triangulaire(longueurs): break noms = choix_points(3) nom_tr = nom_triangle(noms) l = [i for i in range(3)] n = [l.pop(random.randrange(3 - i)) for i in range(3)] c = cotes_sommets(noms) recip = (nom_tr, c[n[0]], nombre(longueurs[n[0]]), c[n[1]], nombre(longueurs[n[1]]), c[n[2]], nombre(longueurs[n[2]]), nom_tr) enonce = \ """Soit $%s$ un triangle tel que : $\\quad %s=\\unit[%s]{cm}\\quad$, $\\quad %s=\\unit[%s]{cm}\\quad$ et $\\quad %s=\\unit[%s]{cm}$.\\par Quelle est la nature du triangle $%s$? """ % \ recip exo.append(enonce) cor.append(enonce) cor.append("\\par\\dotfill{}\\\\\n") cor.append(u"Le triangle %s n'est ni isocèle, ni équilatéral.\\par\n" % nom_tr) cor.append("$\\left.") cor.append("\\renewcommand{\\arraystretch}{2}") cor.append("\\begin{array}{l}") cor.append(u"\\bullet %s^2=%s^2=%s\\qquad\\text{(}[%s]\\text{ est le plus grand côté.)}\\\\\n" % (c[2], nombre(longueurs[2]), nombre(longueurs[2] ** 2), c[2])) cor.append("\\bullet %s^2+%s^2=%s^2+%s^2=%s \n" % (c[0], c[1], nombre(longueurs[0]), nombre(longueurs[1]), nombre(longueurs[0] ** 2 + longueurs[1] ** 2))) cor.append("\\end{array}") cor.append("\\right\\rbrace$") cor.append(u"""Donc $%s^2=%s^2+%s^2$.\\par D'après la \\textbf{réciproque du théorème de Pythagore}, \\fbox{le triangle $%s$ est rectangle en $%s$.}""" % (c[2], c[0], c[1], nom_tr, noms[2])) return (exo, cor, question)
def Appartient(parametre): ## ---Initialisation--- question = u"Compléter en utilisant $\\in$ ou $\\notin$ :" exo = [] cor = [] ## ---Calcul des paramètres--- nom_point = choix_points(5) coordonnee_point = coordonnees_points() #liste des combinaisons de 2 points duo_point = liste_combinaison(nom_point[0:4],2) #nature et noms des combinaisons de 2 points nom_duo_point = [] nature_duo_point = [] for i in range(len(duo_point)): nom_duo_point.append("(%s%s)" %(duo_point[i][0],duo_point[i][1])) nature_duo_point.append("une droite") choix_duo_point = len(duo_point)+1 # diagonale = [[nom_point[0],nom_point[2]],[nom_point[1],nom_point[3]]] choix_diagonale = random.randrange(2) choix_type = random.randrange(5) ## ---Redaction--- tex_figure(exo,nom_point,coordonnee_point,duo_point,nature_duo_point,choix_duo_point) tex_figure(cor,nom_point,coordonnee_point,duo_point,nature_duo_point,choix_duo_point) if choix_type== 0: exo.append("$$ %s \\ldots (%s%s) $$" %(diagonale[choix_diagonale][0],nom_point[4],diagonale[choix_diagonale][1])) cor.append("$$ %s \\boxed{\\in} (%s%s) $$" %(diagonale[choix_diagonale][0],nom_point[4],diagonale[choix_diagonale][1])) elif choix_type == 1: exo.append("$$ %s \\ldots [%s%s) $$" %(diagonale[choix_diagonale][0],nom_point[4],diagonale[choix_diagonale][1])) cor.append("$$ %s \\boxed{\\notin} [%s%s) $$" %(diagonale[choix_diagonale][0],nom_point[4],diagonale[choix_diagonale][1])) elif choix_type == 2: exo.append("$$ %s \\ldots [%s%s) $$" %(diagonale[choix_diagonale][0],diagonale[choix_diagonale][1],nom_point[4])) cor.append("$$ %s \\boxed{\\in} [%s%s) $$" %(diagonale[choix_diagonale][0],diagonale[choix_diagonale][1],nom_point[4])) elif choix_type == 3: exo.append("$$ %s \\ldots [%s%s] $$" %(diagonale[choix_diagonale][0],nom_point[4],diagonale[choix_diagonale][1])) cor.append("$$ %s \\boxed{\\notin} [%s%s] $$" %(diagonale[choix_diagonale][0],nom_point[4],diagonale[choix_diagonale][1])) else: exo.append("$$ %s \\ldots [%s%s] $$" %(nom_point[4],diagonale[choix_diagonale][0],diagonale[choix_diagonale][1])) cor.append("$$ %s \\boxed{\\in} [%s%s] $$" %(nom_point[4],diagonale[choix_diagonale][0],diagonale[choix_diagonale][1])) return (exo, cor, question)
def PythagoreTexte(parametre): ## ---Initialisation--- question = u"Calculer la mesure du 3\\up{eme} côté :" exo = [ ] cor = [ ] ## ---Calcul des paramètres--- #nom nom_sommet = choix_points(3) duo_sommet = liste_combinaison(nom_sommet, 2) #mesure couples_pythagore = trouve_couples_pythagore(parametre[0]) mesure_corrige = couples_pythagore[random.randrange(len(couples_pythagore))] choix = random.randrange(3) mesure_sujet = [] for i in range(len(mesure_corrige)): if i == choix: mesure_sujet.append("\\ldots") else: mesure_sujet.append(mesure_corrige[i]) ## ---Redaction--- exo.append("%s%s%s est un triangle rectangle \\newline" %(nom_sommet[0],nom_sommet[1],nom_sommet[2])) cor.append("%s%s%s est un triangle rectangle \\newline" %(nom_sommet[0],nom_sommet[1],nom_sommet[2])) exo.append(u"Son hypoténuse est [%s%s] \\newline" %(duo_sommet[2][0],duo_sommet[2][1])) cor.append(u"Son hypoténuse est [%s%s] \\newline" %(duo_sommet[2][0],duo_sommet[2][1])) exo.append("On sait que :") cor.append("On sait que :") exo.append("\\begin{itemize}") cor.append("\\begin{itemize}") for i in range(len(duo_sommet)): exo.append("\\item $%s%s=\\unit{%s}{cm}$" % (duo_sommet[i][0],duo_sommet[i][1],mesure_sujet[i])) if i == choix: cor.append("\\item $%s%s=\\boxed{\\unit{%s}{cm}}$" % (duo_sommet[i][0],duo_sommet[i][1],mesure_corrige[i])) else: cor.append("\\item $%s%s=\\unit{%s}{cm}$" % (duo_sommet[i][0],duo_sommet[i][1],mesure_corrige[i])) exo.append("\\end{itemize}") cor.append("\\end{itemize}") return (exo, cor, question)
def exo_pythagore(parametre): types_exercice = [[2, random.randrange(2)], [0, 1]] random.shuffle(types_exercice) random.shuffle(types_exercice[0]) random.shuffle(types_exercice[1]) question = "" exo = ["\\begin{multicols}{2}", "\\begin{enumerate}"] cor = ["\\begin{multicols}{2}", "\\begin{enumerate}"] for j in range(2): while True: longueurs = couples_pythagore[random.randrange(len(couples_pythagore))] longueurs = [longueurs[i] / 10.0 for i in range(3)] if inegalite_triangulaire(longueurs): break noms = choix_points(3) angles = fig_tr_rect(longueurs) nom_tr = nom_triangle(noms) long0 , long1 = types_exercice[j] cotes = cotes_sommets(noms) enonce = \ """ \\item Soit $%s$ un triangle rectangle en $%s$ tel que :\\par $%s=\\unit[%s]{cm} \\text{ et }%s=\\unit[%s]{cm}$.\\par Calculer la longueur $%s$.""" % \ enonce_pythagore(noms, angles, longueurs, cotes, nom_tr, long0, long1) exo.append(enonce) cor.append(enonce) cor.append("\\par\\dotfill{}\\par\n") cor.append(u"Le triangle $%s$ est rectangle en $%s$.\\par" % \ (nom_tr, noms[2])) cor.append(u"Son hypoténuse est $[%s]$.\\par" % (cotes[2])) cor.append(u"D'après le \\textbf{théorème de Pythagore} :" ) cor.append("\\[%s^2=%s^2+%s^2\\]" % (cotes[2], cotes[0], cotes[1] )) if long0 == 2 or long1 == 2: cor.append("\\[%s^2=%s^2-%s^2\\kern1cm\\text{(On cherche }%s)\\]" % (cotes[(3 - long0) - long1], cotes[2], cotes[((4 - long0) - long1) % 2], cotes[(3 - long0) - long1])) if long0 == 2 or long1 == 2: cor.append("\\[%s^2=%s^2-%s^2\\]" % (cotes[(3 - long0) - long1], nombre(longueurs[2]), nombre(longueurs[((4 - long0) - long1) % 2]))) else: cor.append("\\[%s^2=%s^2+%s^2\\]" % (cotes[2], nombre(longueurs[0]), nombre(longueurs[1]))) if long0 == 2 or long1 == 2: cor.append("\\[%s^2=%s-%s\\]" % (cotes[(3 - long0) - long1], nombre(longueurs[2] ** 2), nombre(longueurs[((4 - long0) - long1) % 2] ** 2))) else: cor.append("\\[%s^2=%s+%s\\]" % (cotes[2], nombre(longueurs[0] ** 2), nombre(longueurs[1] ** 2))) if long0 == 2 or long1 == 2: cor.append("\\[%s^2=%s\\]" % (cotes[(3 - long0) - long1], nombre(longueurs[2] ** 2 - longueurs[((4 - long0) - long1) % 2] ** 2))) else: cor.append("\\[%s^2=%s\\]" % (cotes[2], nombre(longueurs[0] ** 2 + longueurs[1] ** 2))) if long0 == 2 or long1 == 2: cor.append("\\[ \\boxed{\\text{Donc }%s=\\sqrt{%s}=\\unit[%s]{cm}}\\]" % (cotes[(3 - long0) - long1], nombre(longueurs[2] ** 2 - longueurs[((4 - long0) - long1) % 2] ** 2), nombre(longueurs[(3 - long0) - long1]))) else: cor.append("\\[\\boxed{\\text{Donc }%s=\\sqrt{%s}=\\unit[%s]{cm}}\\]" % (cotes[2], nombre(longueurs[0] ** 2 + longueurs[1] ** 2), nombre(longueurs[2]))) if j == 0: exo.append("\\columnbreak") cor.append("\\columnbreak") exo.append("\\end{enumerate}\n\\end{multicols}\n") cor.append("\\end{enumerate}\n\\end{multicols}\n") return (exo, cor, question)
def exo_triangle_cercle(parametre): question = "" exo = [] cor = [] while True: longueurs = couples_pythagore[random.randrange(len(couples_pythagore))] longueurs = [longueurs[i] / 10.0 for i in range(3)] if inegalite_triangulaire(longueurs): break noms = choix_points(3) angles = fig_tr_rect(longueurs) nom_tr = nom_triangle(noms) long0 = random.randrange(3) long1 = (random.randrange(2) + 1 + long0) % 3 cotes = cotes_sommets(noms) enonce = \ u"""\\begin{minipage}{4cm} \\begin{pspicture}(-2,-2)(2,2) \\SpecialCoor\\psset{PointSymbol=x} \\pstGeonode[PointName=%s,PosAngle=%s](1.5;%s){a} \\pstGeonode[PointName=%s,PosAngle=%s](1.5;%s){b} \\pstGeonode[PointName=%s,PosAngle=%s](1.5;%s){c} \\pspolygon(a)(b)(c)\\pscircle(0,0){1.5} \\rput(1.8;%s){$\\big(\\mathcal{C}\\big)$} \\end{pspicture} \\end{minipage}\\hfill \\begin{minipage}{13cm} $\\big(\\mathcal{C}\\big)$ est un cercle de diamètre $[%s]$ et $%s$ est un point de $\\big(\\mathcal{C}\\big)$.\\par On donne $%s=\\unit[%s]{cm}\\text{ et }%s=\\unit[%s]{cm}$.\\par Calculer la longueur $%s$.""" % \ enonce_pythagore(noms, angles, longueurs, cotes, nom_tr, long0, long1, diam=1) exo.append(enonce) cor.append(enonce) cor.append("\\par\\dotfill{}\\\\\n") cor.append(u"$[%s]$ est le diamètre du cercle circonscrit au triangle $%s$.\\par" % (cotes[2], nom_tr)) cor.append("\\fbox{Donc le triangle %s est rectangle en %s.}\\\\\n" % (nom_tr, noms[2])) cor.append(u"D'après le \\textbf{théorème de Pythagore} :") cor.append(u"\\[%s^2=%s^2+%s^2\\kern1cm\\text{(car }[%s]\\text{ est \\emph{l'hypoténuse})}\\]" % (cotes[2], cotes[0], cotes[1], cotes[2])) if long0 == 2 or long1 == 2: cor.append("\\[%s^2=%s^2-%s^2\\kern1cm\\text{(On cherche }%s)\\]" % (cotes[(3 - long0) - long1], cotes[2], cotes[((4 - long0) - long1) % 2], cotes[(3 - long0) - long1])) if long0 == 2 or long1 == 2: cor.append("\\[%s^2=%s^2-%s^2\\]" % (cotes[(3 - long0) - long1], nombre(longueurs[2]), nombre(longueurs[((4 - long0) - long1) % 2]))) else: cor.append("\\[%s^2=%s^2+%s^2\\]" % (cotes[2], nombre(longueurs[0]), nombre(longueurs[1]))) if long0 == 2 or long1 == 2: cor.append("\\[%s^2=%s-%s\\]" % (cotes[(3 - long0) - long1], nombre(longueurs[2] ** 2), nombre(longueurs[((4 - long0) - long1) % 2] ** 2))) else: cor.append("\\[%s^2=%s+%s\\]" % (cotes[2], nombre(longueurs[0] ** 2), nombre(longueurs[1] ** 2))) if long0 == 2 or long1 == 2: cor.append("\\[%s^2=%s\\]" % (cotes[(3 - long0) - long1], nombre(longueurs[2] ** 2 - longueurs[((4 - long0) - long1) % 2] ** 2))) else: cor.append("\\[%s^2=%s\\]" % (cotes[2], nombre(longueurs[0] ** 2 + longueurs[1] ** 2))) if long0 == 2 or long1 == 2: cor.append("\\[\\boxed{\\text{Donc }%s=\\sqrt{%s}=\\unit[%s]{cm}}\\]" % (cotes[(3 - long0) - long1], nombre(longueurs[2] ** 2 - longueurs[((4 - long0) - long1) % 2] ** 2), nombre(longueurs[(3 - long0) - long1]))) else: cor.append("\\[\\boxed{\\text{Donc }%s=\\sqrt{%s}=\\unit[%s]{cm}}\\]" % (cotes[2], nombre(longueurs[0] ** 2 + longueurs[1] ** 2), nombre(longueurs[2]))) exo.append("\\end{minipage}\n") cor.append("\\end{minipage}\n") return (exo, cor, question)