• Home
    • Home
    • Wouf's Blog
    • Bibliowouf
    • Boutique TShirt
    • Sponsoring
    • Politique de confidentialié
  • Math
    • Math au collège
    • Applis et boutiques
    • Cours particuliers
  • Jeux
    • Echecs
    • Poker
    • Des chiffres et des lettres
    • Dogs and cats (mastermind)
    • boggle - version Anglaise
    • boggle - version Française
  • Info
    • Console Python
    • SVG EDIT
    • fond d'écran
    • Prénom en chinois
    • Boite à outils
    • Mes Logiciels
    • DIVERS
    • Webmaster?
    • Liens

Laurent Petitprez

Tweet

Les conseils de Wouf

Beaucoup d’élèves entrant au lycée ont en effet des difficultés à manipuler les fractions, les racines carrées, les puissances, à factoriser des expressions… Ces notions, apprises au collège, sont mal assimilées, et le programme des classes de lycée ne prévoit pas de les retravailler en profondeur.

Cet ouvrage propose une remédiation pas à pas. Un code simple et mnémotechnique est associé à chacune des règles et rappelé dans toutes les corrections d’exercices. Il permet de se repérer et de comprendre ses erreurs.

Les statistiques sont formelles : il y a de plus en plus d'étrangers dans le monde

Pierre Desproges

Voir toutes les citations.


Compter les triangles !
C'est une activité ancienne et toujours à la mode. Parfois proposée par le prof de Mathématiques, ou en guise d'enigme sur internet, le dénombrement de triangles (ou quadrilatères,...) n'est pas aussi facile que l'on pense ! Sans technique ni méthode, c'est peine perdue ! J'ai discuté aujourdh'hui avec un collègue et ami, enseignant de Mathématiques du problème suivant : Combien voyez-vous de vrais triangles (pas plats) dans la figure suivante : figure
Python ! AU SECOURS !
Comme souvent plutôt que de passer un certain temps à compter, avec concentration et méthode, je préfère coder quelques lignes ! Ceci a au moins l'avantage d'être réutilisable !
Code Python traduit en HTML:
import sys
#cette  application compte le nombres de (vrais) triangles tracés
#dans une figure donnée.
#Elle prend en compte le fichier:
#               graphe.txt
#qui contient des lignes de la forme ABCD pour signifier
# que les segment [AB] [AC] et [AD] sont tracés
#et éventuellement
#               alignement.txt
#qui contient des lignes de la forme ABCD pour signifier
# que A,B,C et D sont alignés.

segment=[]


def lignes():
    """renvoie les lignes de graphe.txt""" 
    try:
        with open("graphe.txt" ) as graphe:
            lignes=graphe.read().split()
            return lignes
    except:
        print("Le fichier graphe.txt est introuvable" )
        sys.exit()


def les_alignements():
     """renvoie les lignes de alignement.txt""" 
     try:
        with open("alignement.txt" ) as alignement:
            lignes=alignement.read().split()
            return lignes
     except:
        return []

    
def les_segments():
    """renvoie tous les segments -set- construits""" 
    segments=[]
    l=[x for x in lignes() if len(x)>0]
    for ligne in l:
        if len(ligne)<2:
            print("problème dans graphe.txt" )
            sys.exit()
        else:
            for x in ligne[1:]:
                segments.append(set(ligne[0]).union(set(x)))
    return segments
    

def les_points(l):
    """renvoie tous les points apparraissant dans une liste de segments""" 
    points=set()
    for x in l:
        for y in x:
            points.add(y)
    return points

    
l=les_segments()
l2=["[" +"" .join(list(x))+"]"  for x in sorted(l)]
p=les_points(l)
a=les_alignements()
print(a)
print("Il y a {} points : {}" .format(len(p),"," .join(sorted(p))))
print("et {} segments : {}" .format(len(l),"," .join(l2)))

plats=set()
if len(a)!=0:
    print("Alignements :" )
    for d in a:
        print(d)
        if len(set(d))>2:
            trois=[frozenset([x,y,z]) for x in set(d) for y in set(d) for z in set(d) if len(set([x,y,z]))==3]
            for t in trois:
                plats.add(t)
##    for p in plats:
##        print(p)
            
#création de tous les ensemnbles de 3 points
triplets= [ [x,y,z] for x in p for y in p for z in p]
trio=[]
for t in triplets:
    tt=set(t)
    if len(tt)==3:
        trio.append(tt)

triangles=[]

for t in trio:
    tl=list(t)
    cotes=[set([tl[0],tl[1]]),set([tl[0],tl[2]]),set([tl[1],tl[2]])]
    if cotes[0] in l and cotes[1] in l and cotes[2] in l and t not in triangles:
        triangles.append(t)

#triangles contient la liste des ensembles de points formant triangles constructibles
# reste à supprimer les plats


resultats=[t for t in triangles if t not in plats]
print("Nombres de vrais triangles :" ,len(resultats))
for t in resultats:
    print ("" .join(sorted(list(t))),end=" " )

Mode d'emploi

Cette application compte le nombres de (vrais) triangles tracés dans une figure donnée.

Elle prend en compte le fichier graphe.txt qui contient des lignes de la forme ABCD pour signifier que les segment [AB] [AC] et [AD] sont tracés et éventuellement alignement.txt qui contient des lignes de la forme ABCD pour signifier que A,B,C et D sont alignés.

Le fichier graphe.txt

Pour l'exemple ce fichier contient :

AMUOEG
GAUMOTSREI
IGROME
EIRGOUATMS
SETOGM
MSTEORIUGA
TESMOG
RGIEOM
UAMOEG
OMUAGRIETS
figure
Le fichier alignement.txt

Pour l'exemple ce fichier contient :

MORI
STOG
EOUA
MTE
MUG
ERG
Résultats :
figure

Ainsi la réponse à la question préliminaire était 37...

Nous pouvons être surpris de trouver un nombre premier alors que la figure est riche en symétrie ! Non ?

Remarques :

Open Sources et gratuité n'empêche ni les dons ni les remerciements

Un euros ou deux pour m'aider à payer le serveur ? Merci d'avance!

Améliorations ?

Vous avez envie d'une fonctionnalité, ou de participer au développement ? Utilisez le champ FB ci dessous !


 


Tweets by wouf

Comment ???

NEWS

  • Page : https://site2wouf.fr/denombre_triangles.php
  • Catégorie : Mathématiques

Pseudo.py un petit utilitaire pour créer des pseudos

La problématique était la suivante :

L'équipe pédagogiques du collège dans lequel j'exerce désirait, dans le cadre de la semaine des Mathématiques, créer une activité en ligne à destination de toutes les classes de sixième. Chaque élève joue pour sa classe. Il doit donc avoir un pseudo et nous devons, grâce à lui, savoir dans quelle classe il est inscrit.

Or la nécessité d'être en conformité avec le RGPD nous oblige à une certaine prudence.

Notre idée est la suivante :

Nous créons pas classe une liste de 50 pseudos dans lequel un code numérique identifie la classe d'origine. Chaque élève choisit un pseudo et le raye de la liste.

Ce pseudo est son identifiant pour accéder aux activités (via Canopé) . Aucune donnée personnelle n'est sauvegardée...

Pseudo.py

J'utilise un fichier texte avec quelques noms d'animaux :

[text] CHIEN CHAT TAUREAU VACHE AGNEAU CHEVRE CERF LAPIN COCHON CHEVAL LION TIGRE PANTHERE JAGUAR GUEPARD OURS LOUP RENARD HYENE ELEPHANT RHINOCEROS HIPPOPOTAME ZEBRE GIRAFE ANTILOPE KOALA KANGOUROU CASTOR SINGE PANDA LOUTRE TORTUE SERPENT LEZARD IGUANE CROCODILE ALLIGATOR DRAGON PYTHON MOUSTIQUE MOUTON CHEVREUIL OURSON SOURIS RAT POULE CANARD OIE COQ PAON PERROQUET PINGOUIN FLAMANT FOUINE HERISSON COLOMBE PIGEON [/text]

Avec le code python qui suit on génère un fichier texte qui répond au cahier des charges:

[python]from random import * nb_pseudo=50 f = open("animaux.txt", "r") g= open ("result.txt","w") animaux=f.read().splitlines() classes={ "6A": "13,17,21,25,29,33", "6B": "14,18,22,26,34,38", "6C": "11,15,19,23,27,31", "6D": "12,16,24,28,32,36"} for classe in classes.keys(): g.write(classe+"\n") suffixes=(eval(classes[classe])) shuffle(animaux) for n in range(nb_pseudo): g.write(animaux[n]+str(choice(suffixes))+"\n") g.write(40*"-"+"\n") g.close() [/python]

Et on obtient le fichier texte " result.txt ":

[text]6A CHEVRE17 GUEPARD17 OURS29 FOUINE21 POULE13 OURSON17 COLOMBE21 VACHE13 CHEVREUIL21 COQ25 FLAMANT17 COCHON13 HYENE21 CASTOR29 PERROQUET13 KANGOUROU21 GIRAFE29 ANTILOPE33 TORTUE21 TIGRE21 CHIEN17 IGUANE29 TAUREAU17 CHEVAL25 ALLIGATOR25 RENARD25 LION17 PINGOUIN21 PIGEON21 RHINOCEROS21 CHAT13 SERPENT33 MOUTON21 HERISSON21 KOALA29 MOUSTIQUE13 DRAGON25 ZEBRE17 PAON21 SOURIS25 AGNEAU33 PANTHERE33 CROCODILE33 RAT25 PANDA29 SINGE17 LEZARD29 LOUP25 OIE13 CANARD33 ---------------------------------------- 6B PANDA38 RENARD38 CHEVREUIL26 CHAT22 CHIEN22 CHEVRE14 OURSON34 HYENE18 CERF38 PYTHON14 LOUTRE22 VACHE34 HIPPOPOTAME22 CASTOR18 MOUSTIQUE14 LOUP26 FOUINE26 OURS26 LEZARD34 COCHON38 OIE38 SOURIS22 CROCODILE26 SERPENT14 TIGRE26 DRAGON22 IGUANE34 AGNEAU18 PINGOUIN26 SINGE26 ANTILOPE22 ZEBRE14 KANGOUROU14 ALLIGATOR18 HERISSON34 LAPIN22 PERROQUET18 PAON14 COLOMBE26 POULE26 MOUTON38 COQ14 JAGUAR34 ELEPHANT18 LION18 RHINOCEROS14 TAUREAU34 GUEPARD26 FLAMANT26 PANTHERE38 ---------------------------------------- 6C COCHON27 CROCODILE31 ZEBRE11 LOUTRE31 FOUINE19 KANGOUROU23 LEZARD19 GUEPARD11 LAPIN31 PYTHON19 TIGRE19 OIE31 GIRAFE15 COQ31 CHEVAL27 CASTOR19 ELEPHANT15 OURSON15 RENARD19 DRAGON11 TORTUE27 ALLIGATOR11 HYENE31 CHAT31 KOALA15 RHINOCEROS31 LION19 FLAMANT19 PAON23 LOUP15 HIPPOPOTAME11 CERF11 CHEVREUIL11 VACHE19 CHIEN23 SINGE23 AGNEAU27 CHEVRE11 OURS31 IGUANE27 PANTHERE23 SERPENT23 TAUREAU23 POULE31 CANARD23 COLOMBE11 PIGEON23 RAT23 PINGOUIN19 PANDA27 ---------------------------------------- 6D CHEVRE28 PAON32 ZEBRE12 CASTOR16 MOUSTIQUE32 LOUTRE12 CHEVAL36 RENARD24 OURSON36 CHEVREUIL32 ANTILOPE36 TORTUE36 SINGE16 TIGRE12 TAUREAU16 COCHON28 LEZARD24 AGNEAU12 PIGEON28 JAGUAR12 HYENE36 HERISSON36 FLAMANT32 CHAT24 RAT16 PERROQUET28 VACHE16 GIRAFE24 ELEPHANT12 PINGOUIN36 SERPENT24 MOUTON16 POULE28 OURS24 PYTHON24 HIPPOPOTAME28 COLOMBE32 LION12 ALLIGATOR24 GUEPARD12 RHINOCEROS24 COQ16 OIE24 SOURIS12 LOUP16 CERF32 CROCODILE32 PANDA24 KOALA12 FOUINE24 ---------------------------------------- [/text]

Remarques

J'ai choisi les nombres de deux chiffres pour qu'on puisse rapidement retrouver la classe en question : Le reste dans la division euclidienne de ce nombre par 4 donne le rang de la classe :

13 = 4 × 3 + 1 : première classe

Le code Python n'est pas commenté, il est très simple !

lien vers l'article sur wouf blog
 

TIPS

Pour un surf correct, sur le site de Wouf, il vous faut avoir un navigateur de moins de 10 ans et ne pas refuser le javascript.

Si vous detectez une imperfection, n'hésitez pas à commenter!

Voir tous les conseils.

Dernière mise à jour:

Juillet-aôut 2023

Nouvelle Page !

  • Exercices du jour : Les 16 immeubles !

Pages modifiées (ou corrigées) !

  • Exercices du jour : L'enclos
  • Exercices du jour : Les carrelages de couleur /a>

Voir toutes les mises à jour.

 

Trois liens disponibles !

Votre propre message ici, c'est possible! Plus d'informations



Sauf mention contraire, le site est placé sous double licence Creative Commons et GNU Free Documentation License, par contre les grandes images décoratives appartiennent à Corbis et sont licenciées par microsoft

Contact: w0uf@free.fr (avec un zéro à la place du O)