Application Python pour compter automatiquement le nombre de "vrais" triangles (non plats) dans une figure géométrique.
Auteur : Laurent Petitprez (Wouf) - site2wouf.fr
L'application analyse une figure géométrique définie par :
- Des segments tracés entre différents points
- Des alignements (optionnels) pour exclure les triangles plats
Elle génère tous les triplets de points possibles et vérifie lesquels forment des triangles valides.
Aucune dépendance externe requise ! Le script utilise uniquement la bibliothèque standard Python (module itertools).
Requis : Python 3.6+
Créez deux fichiers texte dans le même répertoire que le script :
Format : chaque ligne contient un point suivi de tous les points auxquels il est relié.
Exemple :
ABCDE
BACDE
CABDE
DABCE
EABCD
Signification :
- Ligne 1 :
ABCDE→ le point A est relié à B, C, D et E (segments [AB], [AC], [AD], [AE]) - Ligne 2 :
BACDE→ le point B est relié à A, C, D et E (segments [BA], [BC], [BD], [BE]) - etc.
Format : chaque ligne contient des points alignés.
Exemple :
AEC
BED
Signification :
- Ligne 1 :
AEC→ les points A, E et C sont alignés (le triangle AEC est plat) - Ligne 2 :
BED→ les points B, E et D sont alignés (le triangle BED est plat)
python3 nbtri_moderne.pyLe script affiche :
- Le nombre de points
- Le nombre de segments
- Les alignements déclarés (si présents)
- Le nombre de vrais triangles
- La liste complète des triangles trouvés
A
/|\
/ | \
/ | \
/ E \
D----+----B
\ | /
\ | /
\ | /
\|/
C
graphe.txt :
ABCDE
BACDE
CABDE
DABCE
EABCD
alignement.txt :
AEC
BED
============================================================
📊 RÉSULTATS DE L'ANALYSE
============================================================
📍 Points : 5
A, B, C, D, E
📏 Segments : 10
[AB], [AC], [AD], [AE], [BC], [BD], [BE], [CD], [CE], [DE]
⚠️ Alignements déclarés : 2
AEC
BED
🔺 Nombre de vrais triangles : 8
📋 Liste des triangles :
ABC ABD ABE ACD ADE BCD BCE CDE
============================================================
Décomposition des 8 triangles :
- 4 petits triangles : ABE, BCE, CDE, DAE
- 4 grands triangles : ABC, BCD, CDA, DAB
-
Optimisation avec
combinations- Génération directe des triplets uniques (pas de doublons)
- Complexité réduite : C(n,3) au lieu de n³
-
Code structuré et documenté
- Fonctions clairement nommées et commentées
- Docstrings détaillées pour chaque fonction
- Gestion des erreurs améliorée
-
Affichage moderne
- Interface en couleur avec emojis
- Présentation claire et structurée
- Messages d'erreur explicites
-
Maintenabilité
- Code modulaire facile à modifier
- Séparation claire des responsabilités
- Respect des conventions PEP 8
Au lieu de détecter automatiquement les points alignés (ce qui nécessiterait des calculs géométriques et des seuils arbitraires), l'utilisateur les déclare explicitement. Cela offre :
- Contrôle pédagogique : l'enseignant décide ce qui compte comme "triangle plat"
- Flexibilité : adaptation aux figures dessinées à main levée
- Simplicité : pas de calculs géométriques complexes
- Transparence : l'utilisateur comprend exactement ce qui est pris en compte
- Sans
combinations: O(n³) pour générer les triplets + filtrage - Avec
combinations: O(C(n,3)) = O(n³/6) pour générer + O(1) par triplet
Pour n = 10 points : 1000 itérations → 120 itérations (8x plus rapide)
Ce script est distribué librement pour un usage éducatif.
Auteur : Laurent Petitprez (Wouf)
Site web : site2wouf.fr
GitHub : github.com/w0uf/nb_tri
N'hésitez pas à proposer des améliorations ou à signaler des bugs !
Pour toute question : contact via site2wouf.fr