Alors je viens de finir un programme sans prétention qui ,je l'espère,vous impressionnera:
Il sait:
- Trouver le nombre de quadrilatère / les donner
- Trouver un cas spécial (6 points,39 quadrilatères)
- Faire de rapides stats (maximum/minimum de quadrilatères pour n points en ayant faire k essais
- Afficher les quadrilatères trouvés
- Déplacer les points (clic gauche->drag)
- Ajouter de nouveaux points (clic droit)
- Refaire une nouvelle liste de points (espace)
- Changer le nombre de points (flèche droite et gauche)
Pour le lancer il vous faudra python (2.x) et pygame (paquet python-pygame)
Le code est ici http://quadsfinder.googlecode.com/files/quad.zip
Si vous avez des commentaires,critiques,..Ce programme étant juste un défi mathématique au départ pour encadrer le nombre de quadrilatères possibles avec n points
# Traceback
Posté par Benoît Laurent (site web personnel) . Évalué à 2.
Il y a un problème sur l'appel de 'get_random_points'
Cette fonction n'existe pas dans view.py
C'est peu être quad.get_random_points() mais dans ce cas le nombre de paramètres est incorrecte.
Erreur se produit sur l'événement 'barre d'espace'
[^] # Re: Traceback
Posté par DrBuenol . Évalué à 1.
[^] # Re: Traceback
Posté par DrBuenol . Évalué à 1.
sauvegarde / chargement de points (touche s / l)
trouver la solution optimale (pour avoir un maximum de quadrilatère pour n points)
touche o pour ajouter un point optimal (qui apportera le plus de quadrilatère)
# Trouver un cas spécial (6 points,39 quadrilatères)
Posté par aedrin . Évalué à 2.
il y a C(6,4) = 15 manières différentes de choisir 4 points parmi 6.
Une fois 4 points choisis, il y a 3! = 6 quadrilatères orientés ou 3!/2 = 3 quadrilatères non orientés.
Au total, il y a 45 quadrilatères non-orientés étant donnés 6 points.
Comment tu arrives à 39 ? Tu ne considères que les quadrilatères non-croisés ? (oui, de base, un quadrilatère croisé est un quadrilatère : http://fr.wikipedia.org/wiki/Quadrilat%C3%A8re )
De manière générale, pour n points, tu auras 3*C(n,4) quadrilatères non-orientés.
[^] # Re: Trouver un cas spécial (6 points,39 quadrilatères)
Posté par DrBuenol . Évalué à 3.
Je ne compte pas les croisés (sinon,le nombre de quadrilatère serait le même pour chaque ensemble de n points)
En faite pour 4 points choisis,il y a soit 1 ou 3 quadrilatères non-croisés possibles (concave ou convexe).Le 45 est le nombre de quadrilatère en comptant les croisés.
En tout cas très bonne réflexion
# Impressionnant et ssans prétention
Posté par Obsidian . Évalué à 4.
Hmm. C'est difficilement compatible !:-) Mais ça donne envie de regarder.
[^] # Re: Impressionnant et ssans prétention
Posté par DrBuenol . Évalué à 3.
Sinon,je viens de remarquer que python2.6 est requis au minimum à cause d'une toute petite ligne ("except Exception as e") le as étant reservé à python 2.6 m'a dit python 2.5 (impressionant quand même:2.5 dit que ce mot clef apparait dans 2.6 <- joli!)
[^] # Re: Impressionnant et ssans prétention
Posté par benoar . Évalué à 3.
À mon époque, on écrivait :
except Exception, e:
Mais je vois que depuis le 2.6 on peut effectivement mettre "as" (mais les deux sont acceptés). Ce simple changement te rendra compatible avec les "vieux" pythons. Mais je n'arrive pas à trouver la raison de ce changement ... Personnellement, où l'as-tu appris comme ça ?
[^] # Re: Impressionnant et ssans prétention
Posté par benoar . Évalué à 3.
[^] # Re: Impressionnant et ssans prétention
Posté par DrBuenol . Évalué à 2.
Mais j'ai une relative grosse expérience avec la programmation en générale (code propre,compréhensible,logique,clair,..)
En tout cas ça flatte l'égo!
sinon le "Exception as e" je l'ai trouvé en regardant la doc (même si j'utilisai le Exception,e au début,mais je le trouve relativement obscur (et faut bientôt passer à python 3,donc autant s'y mettre bien!)
[^] # Re: Impressionnant et ssans prétention
Posté par benoar . Évalué à 2.
Après, ce n'est qu'un programme "court" (même si je fais surtout des programmes courts en python), très algorithmique, et qui n'utilise pas d'objets : ça ne représente pas tout ce qu'on trouve en python.
Pour "référence", moi j'en fait depuis un peu moins de 10 ans, mais très irrégulièrement (genre ça fait quelques temps que je n'ai pas écrit un programme de plus de 20 lignes en python ...).
Pour la syntaxe d'exception, c'est sûr que "as" est plus clair. Je ne savais pas que l'ancienne syntaxe allait disparaître, c'est étrange vu que la nouvelle est seulement arrivée dans le 2.6, ça fait short comme transition. Mais après vérification, c'est bien le cas ... je vais me mettre à jour.
[^] # Re: Impressionnant et ssans prétention
Posté par DrBuenol . Évalué à 1.
Même si comme c'est un algo rapidement fait,j'ai pas trop développé les tests (genre pour chaque fonction,un test)
(ca à l'air béte comme ca,mais les test unitaires c'est tellement utile.....je sais pas comme convaincre de cette beauté de voir que tout mes tests réussisent...)
# Justement j'ai fait un truc dans le même genre
Posté par Dorian . Évalué à 2.
http://dev.bydorian.com/Canvas%20Games/Quads/example.html
Vu que ca utilise l'HTML5, les sources sont disponibles directement mais vu que j'utilise git en local pour gérer tout ca, j'ai mis tout ca sur gitorious : http://gitorious.org/api-canvas-games . Le script en lui-même est là : http://gitorious.org/api-canvas-games/devel/blobs/master/Qua(...) .
« En fait, le monde du libre, c’est souvent un peu comme le parti socialiste en France » Troll
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.