Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#101 19-07-2014 13:16:24
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
Voilà les valeurs données par deux calculateurs en ligne à partir de ma formule:
[ sqrt((sqrt(27^2-((30^2+27^2-22^2)/(2*30))^2)-sqrt(23^2-((30^2+23^2-16^2)/(2*30))^2))^2+(((27^2+16^2)-(22^2+23^2))/(2*30))^2) >>>>> elle est juste, je t'assure... ]
par
http://wims.unice.fr/wims/wims.cgi?sess … &prec=1000
qui donne jusqu'à la 1000 ème décimale:
7,00000008573674832857288196931025039126016175908319943405243493038621359254180880675209324222651247767844290823423516214924809074145420653602446515313764238889584779282288474417438398537120488480522137652764837805077299069986055676058583652111820418840234545369208481605107395534388774810579370078679444421341563997080567954554631406713405024696557533815.....
par
http://web2.0calc.fr/
qui calcule avec une précision de 60 'digits':
7,00000008573674832857288196931025039126016175908319943405243[5......
par
http://www.wolframalpha.com
avec autant de digits que l'on veut:
7,00000008573674832857288196931025039126016175908319943405243493038621359254180880675209324222651247767844290823423516214924809074145420653602446515313764238889584779282288474417438398537120488480522137652764837805077299069986055676058583652111820418840234545369208481605107395534388774810579370078679444421341563997080567954554631406713405024696557533815.....
>>>>> Je ne crois donc pas que problème vienne de moi ou de ma formule... Je n'accuse pas python non plus... ;D
@+
Hors ligne
#102 19-07-2014 13:27:10
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
2e jet :
CMe : partie entière de CM
CMd : calcul CM à 10-25 près
p AC BC AB AM BM CMe CMd
49 22 8 19 6 17 4 3.999999999999999555910790149937383830547332763671875
écart 4.41×−16Cohérent ou pas ?
Oui et non...
Oui, parce que c'est ce que ton programme donne...
Non, parce que le cas de figure que tu présentes là est en réalité le premier parfait que donne le programme de totomm (donc pour un périmètre égal à 49) avec CM = 4 (et non: 3,999999999999999555910790149937383830547332763671875...)
@+
Dernière modification par 0^0 (19-07-2014 13:29:24)
Hors ligne
#103 19-07-2014 13:41:51
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
Tu as posté pendant que j'ajoutais un codicille : je le supprime et le mets ci-dessous :
[EDIT]
Je me réponds : oui et non.
L'item 1 donne :+++ Points intérieurs à distances entières des sommets +++
N° 1 : Périmètre : 49 * 8 19 22 --- 6 17 4
Donc, en fait la valeur manquante est entière : il faut donc que je teste d'abord s'il y a valeur entière et ne pas calculer Cmd si on sait que CM est entier...
On est donc d'accord.
Toi
* tu es sûr de ta formule
* tu es sûr de tes calculateurs en ligne et ils sont d'accord entre eux.
Moi je suis sûr de Python...
Si je calcule avec ta formule et à 10-25, Python n'est pas d'accord avec le résultat de ton site.
Si je calcule avec la précision "standard" et ta formule, le résultat de Python est cohérent avec son résultat à 10-25 près.
Alors ?
Comment nous départager ?
Si Python calculait faux cela se saurait quand même : c'est troublant...
Je me vois mal utiliser ta formule et la calculette windows...
En attendant, le doute existant, je mets ça en attente...
@+
[EDIT]
La 3e hypothèse, c'est moi !
je viens de calculer [tex]\phi[/tex] avec 25 décimales et un prog fait par moi (en rusant avec des nombres entiers) qui de me donne x milliers de décimales si je veux.
Decimal me calcule :
1.6180339887498949025257388711906969547271728515625
mon prog donne :
1.61803398874989484820458683436563811772030917980576
Je n'ai que 15 chiffres après la virgule fiables.
La valeur donnée par mon prog est juste : j'avais contrôlé dans le temps quelques centaines de décimales...
Donc, il y a un pb avec Decimal --> hypothèse : mon utilisation est incorrecte...
Je me repenche dessus en priorité...
Dernière modification par yoshi (19-07-2014 14:10:58)
Hors ligne
#104 19-07-2014 14:18:29
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
Tu as posté pendant que j'ajoutais un codicille : je le supprime et le mets ci-dessous :
[EDIT]
Je me réponds : oui et non.
L'item 1 donne :+++ Points intérieurs à distances entières des sommets +++
N° 1 : Périmètre : 49 * 8 19 22 --- 6 17 4
Donc, en fait la valeur manquante est entière : il faut donc que je teste d'abord s'il y a valeur entière et ne pas calculer Cmd si on sait que CM est entier...
On est donc d'accord.
Je ne suis pas sûr. Car tu tombes sur 3.999999999999999555910790149937383830547332763671875 au lieu de 4.
C'est bien qu'il y a un souci quelque part...
Toi
* tu es sûr de ta formule
* tu es sûr de tes calculateurs en ligne et ils sont d'accord entre eux.
Non je ne suis sûr de rien malheureusement!
C'est bien difficile à vivre...
Moi je suis sûr de Python...
Si je calcule avec ta formule et à 10-25, Python n'est pas d'accord avec le résultat de ton site.
Je ne veux pas incriminer Python mais il doit bien y avoir un truc qui nous échappe...
Si je calcule avec la précision "standard" et ta formule, le résultat de Python est cohérent avec son résultat à 10-25 près.
Troublant!
Alors ?
Comment nous départager ?
Je pense que nous y verrons plus clair en répondant à cette question:
Comment python peut-il bien te sortir 3.999999999999999555910790149937383830547332763671875 au lieu de 4 dans le cas traité?
Je me vois mal utiliser ta formule et la calculette windows...
Moi aussi lol! Et je sais de quoi je parle... C'est bien pour cela qu'il est nécessaire de comprendre pourquoi Python ne fournit pas les bons résultats.
Je suis incompétent en la matière....
@+
Hors ligne
#105 19-07-2014 14:24:47
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Re
Concernant ta dernière [EDIT]:
En effet..
Explication possible: Python calcule juste à n décimales voulues mais avec des valeurs qui n'ont pas le même degré de précision au départ.
@+
Hors ligne
#106 19-07-2014 14:47:10
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Triangles ayant un point intérieur à distance entière des sommets
Salut,
Je crois que je tiens une hypothèse connexe : la racine carrée...0
Quelqu'un sur la toile a implémenté le calcul de racine carrée pour le module Decimal...
Si je l'utilise pour calculer le nombre d'or avec 100 décimales, je n'ai plus d'erreur...
La racine carrée ne fait partie des opérations standard +, -, *, /...
Pff, nouveau pb !
Pour ta question, comment j'ai obtenu 3.9999... et non 4 : je n'ai fait que rechercher des écarts à 10-10 en court-circuitant le re-calcul de totomm sur des entiers : là, c'est clair...
@+
Dernière modification par yoshi (19-07-2014 15:13:24)
Hors ligne
#107 19-07-2014 15:34:44
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
Pour ta question, comment j'ai obtenu 3.9999... et non 4 : je n'ai fait que rechercher des écarts à 10-10 en court-circuitant le re-calcul de totomm sur des entiers : là, c'est clair...
Ah bon...
Bizarre...
@+
Hors ligne
#108 19-07-2014 15:48:51
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Triangles ayant un point intérieur à distance entière des sommets
Ave,
Problèmes peut-être rectifiés.
As-tu quelques triangles candidats ?
Entre p = 49 et p=80 je n'en trouve pas : il faudrait que je sache si c'est normal ou pas...
@+
Hors ligne
#109 19-07-2014 15:57:26
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
Non malheureusement, je n'en ai trouvé aucun autre, même avec un écart que l'on pourra juger relativement grand de a,[...] x 10^-3.
(Remarque: je n'ai pas testé tous les candidats....)
Aucun moyen de savoir si c'est normal ou non... Justement, j'attendais d'un programme de quoi y voir plus clair.
@+
Hors ligne
#110 19-07-2014 16:01:23
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
Rien entre 5 et 101...
Je vais revoir mon test...
C'est là qu'il faudrait totomm : lui serait plus à même de juger si mon greffon est au bon endroit dans son module.
Pour le moment, je m'absente 2 bonnes heures, ça va m'aérer le cerveau...
@+
Hors ligne
#111 19-07-2014 16:15:06
#112 19-07-2014 18:17:33
#113 19-07-2014 23:55:00
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Bonsoir,
Pour AB=21, BC=19, AC=11, AM=12 et BM=13
J'ai CM=6,00000070405477321498898474830805371518999722452979018195920.....
M est bien intérieur et se trouve à une distance d'environ 0.0024043 de [AC].
(Le triangle ACM est très aplati!)
@+
Hors ligne
#114 20-07-2014 06:50:09
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Triangles ayant un point intérieur à distance entière des sommets
Bonjour,
Donc réponse : ça colle !
J'ai rendu ça plus "propre" et je livrerai le colis quand la version relesase 2 sera classifiée "Bonne pour le service"...
Les sorties entre p=20 et p = 80
+++ Points intérieurs à distances entières (moins une) des sommets +++
N° 1 : Périmètre : 45 * 13 16 16 --- 12 9 7.000000879045124888655084
Ecart à l'entier le plus proche : 8.79045124888655084E-7N° 2 : Périmètre : 51 * 11 19 21 --- 12 13 6.000000704054773214988985
Ecart à l'entier le plus proche : 7.04054773214988985E-7N° 3 : Périmètre : 54 * 7 23 24 --- 13 12 11.00000084100341695665260
Ecart à l'entier le plus proche : 8.4100341695665260E-7N° 4 : Périmètre : 55 * 16 19 20 --- 15 12 7.000000350647113856285487
Ecart à l'entier le plus proche : 3.50647113856285487E-7N° 5 : Périmètre : 55 * 17 18 20 --- 2 19 15.00000086121537984060985
Ecart à l'entier le plus proche : 8.6121537984060985E-7N° 6 : Périmètre : 58 * 13 21 24 --- 5 22 8.000000547323810974432554
Ecart à l'entier le plus proche : 5.47323810974432554E-7N° 7 : Périmètre : 60 * 16 22 22 --- 17 8 14.00000091382957315268276
Ecart à l'entier le plus proche : 9.1382957315268276E-7N° 8 : Périmètre : 61 * 19 21 21 --- 17 11 10.00000075400280290864444
Ecart à l'entier le plus proche : 7.5400280290864444E-7N° 9 : Périmètre : 62 * 18 21 23 --- 10 20 8.000000872502871618035814
Ecart à l'entier le plus proche : 8.72502871618035814E-7N° 10 : Périmètre : 65 * 7 29 29 --- 14 16 13.00000042943561357587363
Ecart à l'entier le plus proche : 4.2943561357587363E-7N° 11 : Périmètre : 65 * 14 21 30 --- 15 19 2.000000999280282755690808
Ecart à l'entier le plus proche : 9.99280282755690808E-7N° 12 : Périmètre : 65 * 17 19 29 --- 4 26 13.00000042943561357587362
Ecart à l'entier le plus proche : 4.2943561357587362E-7N° 13 : Périmètre : 67 * 13 24 30 --- 19 13 11.00000022974942896926674
Ecart à l'entier le plus proche : 2.2974942896926674E-7N° 14 : Périmètre : 67 * 13 26 28 --- 3 27 10.00000047812119787659918
Ecart à l'entier le plus proche : 4.7812119787659918E-7N° 15 : Périmètre : 67 * 19 22 26 --- 24 3 19.00000028800402093572970
Ecart à l'entier le plus proche : 2.8800402093572970E-7N° 16 : Périmètre : 68 * 16 19 33 --- 21 13 6.000000829732327379610973
Ecart à l'entier le plus proche : 8.29732327379610973E-7N° 17 : Périmètre : 68 * 19 21 28 --- 18 21 1.000000829264067247290129
Ecart à l'entier le plus proche : 8.29264067247290129E-7N° 18 : Périmètre : 69 * 16 23 30 --- 5 27 11.00000027530190170315438
Ecart à l'entier le plus proche : 2.7530190170315438E-7N° 19 : Périmètre : 70 * 17 26 27 --- 18 14 12.00000042657602835885052
Ecart à l'entier le plus proche : 4.2657602835885052E-7N° 20 : Périmètre : 71 * 10 29 32 --- 13 22 7.000000285813747749971888
Ecart à l'entier le plus proche : 2.85813747749971888E-7N° 21 : Périmètre : 71 * 15 24 32 --- 8 27 7.000000285813747749971885
Ecart à l'entier le plus proche : 2.85813747749971885E-7N° 22 : Périmètre : 71 * 20 22 29 --- 7 25 13.00000014226309368656558
Ecart à l'entier le plus proche : 1.4226309368656558E-7N° 23 : Périmètre : 73 * 9 29 35 --- 16 20 9.000000446103975322878428
Ecart à l'entier le plus proche : 4.46103975322878428E-7N° 24 : Périmètre : 73 * 17 21 35 --- 8 28 9.000000446103975322878423
Ecart à l'entier le plus proche : 4.46103975322878423E-7N° 25 : Périmètre : 73 * 13 30 30 --- 23 8 22.00000058835131476760893
Ecart à l'entier le plus proche : 5.8835131476760893E-7N° 26 : Périmètre : 73 * 14 29 30 --- 24 7 22.00000058835131476760892
Ecart à l'entier le plus proche : 5.8835131476760892E-7N° 27 : Périmètre : 73 * 23 24 26 --- 20 23 3.000000185231075767132037
Ecart à l'entier le plus proche : 1.85231075767132037E-7N° 28 : Périmètre : 74 * 11 29 34 --- 22 13 16.00000018878525683269455
Ecart à l'entier le plus proche : 1.8878525683269455E-7N° 29 : Périmètre : 74 * 20 21 33 --- 22 16 5.000000203796314576593993
Ecart à l'entier le plus proche : 2.03796314576593993E-7N° 30 : Périmètre : 74 * 21 21 32 --- 17 22 4.000000203790166481890449
Ecart à l'entier le plus proche : 2.03790166481890449E-7N° 31 : Périmètre : 74 * 21 21 32 --- 22 17 4.000000203790166481890449
Ecart à l'entier le plus proche : 2.03790166481890449E-7N° 32 : Périmètre : 74 * 17 26 31 --- 18 20 6.000000554627459175634577
Ecart à l'entier le plus proche : 5.54627459175634577E-7N° 33 : Périmètre : 75 * 14 29 32 --- 13 29 1.000000816907704324819823
Ecart à l'entier le plus proche : 8.16907704324819823E-7N° 34 : Périmètre : 75 * 19 26 30 --- 27 4 22.00000061761000535442988
Ecart à l'entier le plus proche : 6.1761000535442988E-7N° 35 : Périmètre : 76 * 16 26 34 --- 18 21 5.000000771521548637066502
Ecart à l'entier le plus proche : 7.71521548637066502E-7N° 36 : Périmètre : 76 * 17 26 33 --- 18 22 4.000000771476292481974166
Ecart à l'entier le plus proche : 7.71476292481974166E-7N° 37 : Périmètre : 77 * 15 25 37 --- 18 21 4.000000507787407236475799
Ecart à l'entier le plus proche : 5.07787407236475799E-7N° 38 : Périmètre : 77 * 20 24 33 --- 3 31 17.00000021582023821570145
Ecart à l'entier le plus proche : 2.1582023821570145E-7N° 39 : Périmètre : 77 * 22 25 30 --- 28 3 22.00000064993105482544639
Ecart à l'entier le plus proche : 6.4993105482544639E-7N° 40 : Périmètre : 78 * 22 25 31 --- 24 12 13.00000006744774757985201
Ecart à l'entier le plus proche : 6.744774757985201E-8N° 41 : Périmètre : 78 * 25 26 27 --- 8 24 17.00000006744672867515711
Ecart à l'entier le plus proche : 6.744672867515711E-8N° 42 : Périmètre : 79 * 18 27 34 --- 16 19 11.00000016716945801272947
Ecart à l'entier le plus proche : 1.6716945801272947E-7N° 43 : Périmètre : 79 * 21 24 34 --- 13 22 11.00000016716945801272945
Ecart à l'entier le plus proche : 1.6716945801272945E-7N° 44 : Périmètre : 79 * 18 28 33 --- 17 19 10.00000010468551419844286
Ecart à l'entier le plus proche : 1.0468551419844286E-7N° 45 : Périmètre : 79 * 22 24 33 --- 13 23 10.00000010468551419844286
Ecart à l'entier le plus proche : 1.0468551419844286E-7N° 46 : Périmètre : 79 * 19 29 31 --- 22 13 16.00000006029303389319603
Ecart à l'entier le plus proche : 6.029303389319603E-8N° 47 : Périmètre : 79 * 21 28 30 --- 17 22 7.000000085736748328572882
Ecart à l'entier le plus proche : 8.5736748328572882E-8N° 48 : Périmètre : 79 * 22 27 30 --- 16 23 7.000000085736748328572874
Ecart à l'entier le plus proche : 8.5736748328572874E-8N° 49 : Périmètre : 79 * 25 26 28 --- 12 24 13.00000090128739192875122
Ecart à l'entier le plus proche : 9.0128739192875122E-7N° 50 : Périmètre : 80 * 10 31 39 --- 15 25 6.000000598323753301779603
Ecart à l'entier le plus proche : 5.98323753301779603E-7N° 51 : Périmètre : 80 * 15 31 34 --- 15 30 1.000000598037302369667248
Ecart à l'entier le plus proche : 5.98037302369667248E-7
1er constat : écarts tous entre [tex]n.10^{-7}\; <-->\;n.10^{-8}[/tex].
Précision : ma limite supérieure est [tex]10^{-6}[/tex], mais il n'y a pas pas de limite inférieure fixée...
Les calculs (précision fiable maintenant) sont faits à 10-25 près.
Donc, s'il y avait [tex]n.10^{-9},\,n.10^{-10},\,n.10^{-11}\cdots[/tex], ils auraient été affichés.
Curieux, non ?
@+
Dernière modification par yoshi (20-07-2014 06:53:48)
Hors ligne
#115 20-07-2014 09:08:42
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Bonjour,
Magnifique!
Je savais que je pouvais te faire confiance! ;)
Tout a l'air de parfaitement coller!
On retrouve le cas illustré + une variante et d'autres non moins intéressants...
Je suis curieux de voir quand le 1er cas avec [tex]n.10^{-9}[/tex] apparaît...
@+
Hors ligne
#116 20-07-2014 09:49:50
#117 20-07-2014 09:57:22
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Triangles ayant un point intérieur à distance entière des sommets
RE,
Je vérifie : j'ai demandé l'affichage de la valeur absolue de l'écart...
.......................
Apparemment, ça ne change rien !
Je teste les périmètres entre 100 et 140 : les sorties se multiplient...
J'en dénombre 1036..
Les [tex]n.10^{-9}[/tex] apparaissent à p=140 :
N° 1033 : Périmètre : 140 * 42 47 51 --- 41 21 26.00000000314067013813198
Ecart à l'entier le plus proche : 3.14067013813198E-9N° 1034 : Périmètre : 140 * 44 47 49 --- 41 19 28.00000000314066832322113
Ecart à l'entier le plus proche : 3.14066832322113E-9
De 150 à 160 : 740 cas. Pour tes essais t'auras peut-être intérêt à limiter la fourchette pour p...
Voilà le code:
* je n'ai pas implanté de choix de limite supérieure : elle est restée à 10-6 :
* j'ai par contre pour les choix 1 et 2, en entrée des triangles triés, à périmètre égal, par aires croissantes
# -*- coding: UTF-8 -*-
from math import sqrt
from operator import itemgetter
from decimal import *
D=Decimal
getcontext().prec=25
def sqD(x):
"""Calcul de la racine carrée de x
D'après [url=http://python.jpvweb.com/mesrecettespython/doku.php?id=math_decimal\\\]http://python.jpvweb.com/mesrecettespython/doku.php?id=math_decimal\"\"\"[/url]
if type(x)!=type(Decimal):
x = D(str(x))
return x.sqrt()
def MinMax():
print (" +++ Choix des périmères mini et maxi +++\n")
while 1:
mini=input("Perimètre minimim souhaité ? ")
try:
minp=int(mini)
break
except ValueError:
print ("Entrée incorrecte. Veuillez recommencer S.V.P..\n\n")
while 1:
maxi=input("Perimètre maximum souhaité ? ")
try:
maxp=int(maxi)+1
if maxp<=minp:
print ("Erreur,le maximum doit être supérieur au mini. Veuillez recommencer S.V.P..\n\n")
else:
break
except ValueError:
print ("Entrée incorrecte. Veuillez recommencer S.V.P..\n\n")
print("\n\n")
return minp,maxp
def Generation_des_Triangles(minp,maxp,Trg,Dico,chx):
nb,s=0,0
for p in range(minp,maxp): # p est le périmètre
nb1=nb
for AC in range(1,maxp): # AC sera limité bien avant maxp
BC=(p-AC)//2 # division euclidienne
if BC<AC:
break # AC est trop grand, passer à la valeur suivante de AC
AB=p-AC-BC
while 1: # boucle pour tous les triangles tels que AC<=BC<=AB
if AB>=AC+BC: # le triangle n'existe pas
break # donc sortie de la boucle while...
#print("périmètre =",p,AC,BC,AB)
nb+=1
if chx in "2 3 4":
s=p*(p-2*AB)*(p-2*AC)*(p-2*BC)
Trg.append((p,AC,BC,AB,s)) # Stockage du quintuplet trouvé
BC-=1 #triangle suivant de même périmètre
AB+=1
if BC<AC:
break
Dico.update({p:[nb1,nb]}) # je complète mon dictionnaire
return Trg,Dico
def Points_Intérieurs_triangles(Max,nombre,Trg):
print(" +++ Points intérieurs à distances entières des sommets +++\n\n")
for p,AC,BC,AB,s in Trg:
AC2,BC2,AB2 = AC**2,BC**2,AB**2
b=AB-1
for AM in range(1, b):
AM2 = AM**2
for BM in range(AB - AM + 1,Max):
BM2 = BM**2
xc = (AC2 + AB2 - BC2)/(2 * AB)
yc = sqrt(AC2 - xc**2)
xm = (AM2 + AB2 - BM2)/(2 * AB)
ym = sqrt(AM2 - xm**2)
if ym * xc - (xm * yc) + 0.001 < 0 and ym * (xc - AB) - (yc * (xm - AB)) - 0.001 > 0:
#M est intérieur
CMd = sqrt((xm - xc)**2 + (ym - yc)**2)
CM=int(CMd + 0.0000001)
if abs(CM - CMd) < 0.000001:
#recalcul sur entiers
xcL = AC2 + AB2 - BC2
xmL = AM2 + AB2 - BM2
Yc2 = 4 * AB2 * AC2 - (xcL**2) #4*AB*AB*yc*yc
Ym2 = 4 * AB2 * AM2 - (xmL**2) #4*AB*AB*ym*ym
g = 2 * AB2 * (AC2 + AM2 - CM**2) - ((AB2 + AM2 - BM2) * (AC2 + AB2 - BC2))
if g**2 == Yc2 * Ym2:
nombre += 1
s=round(sqrt(s)/4,3)
print("N°","%4i" % nombre," : ","Périmètre :","%3i" % p," *", "%3i" % AC,"%3i" % BC,"%3i" % AB," --- ","%3i" % AM,"%3i" % BM, "%3i" % CM)
if nombre == 1300:
return
else:
break
def Distances_Points_Intérieurs_trianglesDeuxPlusUn(Max,nombre,Trg):
print(" +++ Points intérieurs à distances entières (moins une) des sommets +++\n\n")
for p,AC,BC,AB,s in Trg:
AC2,BC2,AB2 = AC**2,BC**2,AB**2
b=AB-1
for AM in range(1, b):
AM2 = AM**2
for BM in range(AB - AM + 1,Max):
BM2 = BM**2
xc = (AC2+AB2-BC2)/D(2*AB)
yc = sqD(AC2 - xc**2)
xm = (AM2 + AB2 - BM2)/D(2 * AB)
ym = sqD(AM2 - xm**2)
if ym * xc - (xm * yc) + D('0.001') <D('0') and ym * (xc - AB) - (yc * (xm - AB)) - D('0.001') > D('0'):
#M est intérieur
CMd = sqD((xm - xc)**2 + (ym - yc)**2)
CM=int(round(CMd,0))
if abs(CM - CMd) < D(10**(-6)):
xcL = AC2 + AB2 - BC2
xmL = AM2 + AB2 - BM2
Yc2 = 4 * AB2 * AC2 - (xcL**2) #4*AB*AB*yc*yc
Ym2 = 4 * AB2 * AM2 - (xmL**2) #4*AB*AB*ym*ym
g = 2 * AB2 * (AC2 + AM2 - CM**2) - ((AB2 + AM2 - BM2) * (AC2 + AB2 - BC2))
if g**2 != Yc2 * Ym2:
nombre+=1
print("N°","%3i" % nombre," : ","Périmètre :","%3i" % p,"*", "%3i" % AC,"%3i" % BC,"%3i" % AB,"--- ","%3i" % AM,"%3i" % BM, CMd)
print (" Ecart à l'entier le plus proche :", CMd-CM,"\n")
else:
break
def Perimètres_et_aires_croissantes(minp,maxp,Trg,Dico):
print(" +++ Triangles triés par aires égales (ordre croissant) +++\n\n")
Trg=sorted(Trg,key=itemgetter(4)) # tri sur 5e élément d'un tuple
n,cpt=len(Trg),0
for i in range(1,n):
j=i-1
p0,x0,y0,z0,s0=Trg[j]
p,x,y,z,s=Trg[i]
if s==s0:
if cpt==0:
print ("Périmètre :","%3i" % p0,"%3i" % x0,"%3i" % y0,"%3i" % z0," Aire :",round(sqrt(s0)/4,3))
print ("Périmètre :","%3i" % p,"%3i" % x,"%3i" % y,"%3i" % z," Aire :",round(sqrt(s)/4,3))
cpt+=1
else:
if cpt>0:
print()
cpt=0
return
def AfficheAiresCroissantes_MemePerimetre(Trg,chx):
if chx=="3":
print(" +++ Triangles triés par périmètres croissants et aires croissantes +++\n\n")
for p in range(minp,maxp):
a,b=Dico[p]
Ordre=[]
if b-a>1: # s'il y a plus d'un triangle de périmètre p
Peri=Trg[a:b]
for i,(p,x,y,z,s)in enumerate(Peri):
Ordre.append((i,s))
Ordre=sorted(Ordre,key=itemgetter(1)) # tri sur 2e élément d'un tuple
for i,(no,s) in enumerate(Ordre): # évite gestion compteur
Trg[a+i]=Peri[no] #remplacement par les tuples triés
if chx =="3": # Affichage de la liste triée
p1=minp
for i,(p,x,y,z,s)in enumerate(Trg):
if p!= p1:
p1=p
print("\n")
print ("Périmètre :","%3i" % p,"%3i" % x,"%3i" % y,"%3i" % z," Aire :",round(sqrt(s)/4,3))
return Trg
def Tri_PerimetresEgaux_AiresEgales_Affichage(minp,maxp,Trg,Dico):
print(" +++ Triangles triés par périmètres égaux croissants ET aires croissantes +++\n\n")
for p in range(minp,maxp):
a,b=Dico[p]
Ordre=[]
if b-a>1: # s'il y a plus d'un triangle de périmètre p
Peri=Trg[a:b]
for i,(p,x,y,z,s)in enumerate(Peri):
Ordre.append((i,s))
Ordre=sorted(Ordre,key=itemgetter(1)) # tri sur 2e élément d'un tuple
for i,(x,s) in enumerate(Ordre): # évite gestion compteur
Trg[a+i]=Peri[x] #remplacement par les tuples triés
p0,x0,y0,z0,s0=Trg[0]
n,cpt=len(Trg),0
for i in range(n):
j=i-1
p0,x0,y0,z0,s0=Trg[j]
p,x,y,z,s=Trg[i]
if s==s0:
if cpt==0: # évite de répéter le 1er triangle, si plus de deux
print ("Aire :", round(sqrt(s)/4,3))
print ("Périmètre :","%3i" % p0,"; côtés :","%3i" % x0,"%3i" % y0,"%3i" % z0)
print ("Périmètre :","%3i" % p,"; côtés :","%3i" % x,"%3i" % y,"%3i" % z)
cpt+=1
else:
if cpt>0:
print()
cpt=0
return
# Menu
stoppe=0
while not stoppe:
Trg,nb,nombre=[],0,0
Dico={}
print (" **************************")
print (" * *")
print (" * Tout sur les triangles *")
print (" * *")
print (" **************************")
print ()
print ()
print (" Voulez-vous :")
print ()
print (" 1. Triangles avec points intérieurs à distances entières")
print (" 2. Triangles avec points intérieurs à 2 distances entières et une 3e non")
print (" 3. Triangles, à périmètre égal, triés par aires croissantes")
print (" 4. Triangles de même aire ET même périmètre")
print (" 5. Triangles de mêmes aires")
print ()
print (" 6. Quitter le programme")
print ()
print (" ** Votre choix : ** ",end="")
while 1:
chx=input()
if chx=="6":
stoppe=1
break
elif chx in "1 2 3 4 5":
print ("\n")
minp,maxp=MinMax()
Trg,Dico=Generation_des_Triangles(minp,maxp,Trg,Dico,chx)
if chx =="1":
print()
Trg=AfficheAiresCroissantes_MemePerimetre(Trg,chx)
Points_Intérieurs_triangles(maxp,nombre,Trg)
break
elif chx =="2":
print()
Trg=AfficheAiresCroissantes_MemePerimetre(Trg,chx)
Distances_Points_Intérieurs_trianglesDeuxPlusUn(maxp,nombre,Trg)
break
elif chx=="3":
AfficheAiresCroissantes_MemePerimetre(Trg,chx)
break
elif chx=="4":
Tri_PerimetresEgaux_AiresEgales_Affichage(minp,maxp,Trg,Dico)
break
else:
Perimètres_et_aires_croissantes(minp,maxp,Trg,Dico)
break
else:
print ("Réponses attendues : 1,2,3,4, 5 ou 6. Veuillez recommencer s'il vous plaît...")
print ("\n")
print ("\n")
break
print ("\n")
print ("\n")
print (" A la prochaine !")
@+
Hors ligne
#118 20-07-2014 11:46:38
#119 20-07-2014 12:47:20
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
Je ne comprends pas pourquoi, il n'y a pas d'écart négatif.
Pour obtenir l'entier immédiatement voisin, je ne me suis pas contenté de la fonction int parce que :
>>> int(1.4)
1
>>> int(1.6)
1
Mais dans ce cas on doit arrondir 1.6 à 2 : c'est la définition de l'arrondi en maths...
int() est la partie entière d'un décimal...
Donc j'ai utilisé :
>>> round(1.6,0))
2.0
Mais ce n'est pas un entier...
Donc j'ai écrit CM=int(round(CMd,0)) en ligne 113...
Je viens de m'apercevoir qu'il suffit en fait d'écrire CM=round(CMd), c'est plus simple et plus propre !
Corrige !
Je te propose encore d'ajouter après la def MinMax():
print ("\n +++ Choix de la limite supérieure +++\n")
while 1:
nn=input("Limite supérieure souhaitée entre 1 et 15 ? ")
try:
n=int(nn)
if n>0 and n<16:
break
else:
print ("Entrée incorrecte. Veuillez recommencer S.V.P..\n\n")
except ValueError:
print ("Entrée incorrecte. Veuillez recommencer S.V.P..\n\n")
return n
Puis de mettre entre
print(" +++ Points intérieurs à distances entières des sommets +++\n\n")
la commande :
et enfin de corriger la ligne :
en changeant le 6 en n...
Le seul "ralentissement" que je note, c'est un délai plus important avant et éventuellement pendant l'affichage : plus le n est grand, moins il y a de calculs couronnés de succès...
Le temps de calcul d'un triangle lui, que ce soit n ou 6 n'est pas modifié...
Si j'avais su que tu ne supporterais pas de ne pas avoir immédiatement à ta disposition le choix de la Limite supérieure, je l'aurais fait avant...
Voilà le nouveau code :
# -*- coding: UTF-8 -*-
from math import sqrt
from operator import itemgetter
from decimal import *
D=Decimal
getcontext().prec=25
def sqD(x):
"""Calcul de la racine carrée de x
D'après [url=http://python.jpvweb.com/mesrecettespython/doku.php?id=math_decimal\\\]http://python.jpvweb.com/mesrecettespython/doku.php?id=math_decimal"""[/url]
if type(x)!=type(Decimal):
x = D(str(x))
return x.sqrt()
def MinMax():
print (" +++ Choix des périmères mini et maxi +++\n")
while 1:
mini=input("Perimètre minimim souhaité ? ")
try:
minp=int(mini)
break
except ValueError:
print ("Entrée incorrecte. Veuillez recommencer S.V.P..\n\n")
while 1:
maxi=input("Perimètre maximum souhaité ? ")
try:
maxp=int(maxi)+1
if maxp<=minp:
print ("Erreur,le maximum doit être supérieur au mini. Veuillez recommencer S.V.P..\n\n")
else:
break
except ValueError:
print ("Entrée incorrecte. Veuillez recommencer S.V.P..\n\n")
print("\n\n")
return minp,maxp
def ChoixLimiteSuperieure():
print ("\n +++ Choix de la limite supérieure +++\n")
while 1:
nn=input("Limite supérieure souhaitée entre 1 et 15 ? ")
try:
n=int(nn)
if n>0 and n<16:
break
else:
print ("Entrée incorrecte. Veuillez recommencer S.V.P..\n\n")
except ValueError:
print ("Entrée incorrecte. Veuillez recommencer S.V.P..\n\n")
return n
def Generation_des_Triangles(minp,maxp,Trg,Dico,chx):
nb,s=0,0
for p in range(minp,maxp): # p est le périmètre
nb1=nb
for AC in range(1,maxp): # AC sera limité bien avant maxp
BC=(p-AC)//2 # division euclidienne
if BC<AC:
break # AC est trop grand, passer à la valeur suivante de AC
AB=p-AC-BC
while 1: # boucle pour tous les triangles tels que AC<=BC<=AB
if AB>=AC+BC: # le triangle n'existe pas
break # donc sortie de la boucle while...
#print("périmètre =",p,AC,BC,AB)
nb+=1
if chx in "2 3 4":
s=p*(p-2*AB)*(p-2*AC)*(p-2*BC)
Trg.append((p,AC,BC,AB,s)) # Stockage du quintuplet trouvé
BC-=1 #triangle suivant de même périmètre
AB+=1
if BC<AC:
break
Dico.update({p:[nb1,nb]}) # je complète mon dictionnaire
return Trg,Dico
def Points_Intérieurs_triangles(Max,nombre,Trg):
print(" +++ Points intérieurs à distances entières des sommets +++\n\n")
for p,AC,BC,AB,s in Trg:
AC2,BC2,AB2 = AC**2,BC**2,AB**2
b=AB-1
for AM in range(1, b):
AM2 = AM**2
for BM in range(AB - AM + 1,Max):
BM2 = BM**2
xc = (AC2 + AB2 - BC2)/(2 * AB)
yc = sqrt(AC2 - xc**2)
xm = (AM2 + AB2 - BM2)/(2 * AB)
ym = sqrt(AM2 - xm**2)
if ym * xc - (xm * yc) + 0.001 < 0 and ym * (xc - AB) - (yc * (xm - AB)) - 0.001 > 0:
#M est intérieur
CMd = sqrt((xm - xc)**2 + (ym - yc)**2)
CM=int(CMd + 0.0000001)
if abs(CM - CMd) < 0.000001:
#recalcul sur entiers
xcL = AC2 + AB2 - BC2
xmL = AM2 + AB2 - BM2
Yc2 = 4 * AB2 * AC2 - (xcL**2) #4*AB*AB*yc*yc
Ym2 = 4 * AB2 * AM2 - (xmL**2) #4*AB*AB*ym*ym
g = 2 * AB2 * (AC2 + AM2 - CM**2) - ((AB2 + AM2 - BM2) * (AC2 + AB2 - BC2))
if g**2 == Yc2 * Ym2:
nombre += 1
s=round(sqrt(s)/4,3)
print("N°","%4i" % nombre," : ","Périmètre :","%3i" % p," *", "%3i" % AC,"%3i" % BC,"%3i" % AB," --- ","%3i" % AM,"%3i" % BM, "%3i" % CM)
if nombre == 1300:
return
else:
break
def Distances_Points_Intérieurs_trianglesDeuxPlusUn(Max,nombre,Trg):
n=ChoixLimiteSuperieure()
print("\n\n +++ Points intérieurs à distances entières (moins une) des sommets +++\n\n")
for p,AC,BC,AB,s in Trg:
AC2,BC2,AB2 = AC**2,BC**2,AB**2
b=AB-1
for AM in range(1, b):
AM2 = AM**2
for BM in range(AB - AM + 1,Max):
BM2 = BM**2
xc = (AC2+AB2-BC2)/D(2*AB)
yc = sqD(AC2 - xc**2)
xm = (AM2 + AB2 - BM2)/D(2 * AB)
ym = sqD(AM2 - xm**2)
if ym * xc - (xm * yc) + D('0.001') <D('0') and ym * (xc - AB) - (yc * (xm - AB)) - D('0.001') > D('0'):
#M est intérieur
CMd = sqD((xm - xc)**2 + (ym - yc)**2)
CM=round(CMd)
if abs(CM - CMd) < D(10**(-n)):
xcL = AC2 + AB2 - BC2
xmL = AM2 + AB2 - BM2
Yc2 = 4 * AB2 * AC2 - (xcL**2) #4*AB*AB*yc*yc
Ym2 = 4 * AB2 * AM2 - (xmL**2) #4*AB*AB*ym*ym
g = 2 * AB2 * (AC2 + AM2 - CM**2) - ((AB2 + AM2 - BM2) * (AC2 + AB2 - BC2))
if g**2 != Yc2 * Ym2:
nombre+=1
print("N°","%3i" % nombre," : ","Périmètre :","%3i" % p,"*", "%3i" % AC,"%3i" % BC,"%3i" % AB,"--- ","%3i" % AM,"%3i" % BM, CMd)
print (" Ecart à l'entier le plus proche :", CMd-CM,"\n")
flag=0
else:
break
def Perimètres_et_aires_croissantes(minp,maxp,Trg,Dico):
print(" +++ Triangles triés par aires égales (ordre croissant) +++\n\n")
Trg=sorted(Trg,key=itemgetter(4)) # tri sur 5e élément d'un tuple
n,cpt=len(Trg),0
for i in range(1,n):
j=i-1
p0,x0,y0,z0,s0=Trg[j]
p,x,y,z,s=Trg[i]
if s==s0:
if cpt==0:
print ("Périmètre :","%3i" % p0,"%3i" % x0,"%3i" % y0,"%3i" % z0," Aire :",round(sqrt(s0)/4,3))
print ("Périmètre :","%3i" % p,"%3i" % x,"%3i" % y,"%3i" % z," Aire :",round(sqrt(s)/4,3))
cpt+=1
else:
if cpt>0:
print()
cpt=0
return
def AfficheAiresCroissantes_MemePerimetre(Trg,chx):
if chx=="3":
print(" +++ Triangles triés par périmètres croissants et aires croissantes +++\n\n")
for p in range(minp,maxp):
a,b=Dico[p]
Ordre=[]
if b-a>1: # s'il y a plus d'un triangle de périmètre p
Peri=Trg[a:b]
for i,(p,x,y,z,s)in enumerate(Peri):
Ordre.append((i,s))
Ordre=sorted(Ordre,key=itemgetter(1)) # tri sur 2e élément d'un tuple
for i,(no,s) in enumerate(Ordre): # évite gestion compteur
Trg[a+i]=Peri[no] #remplacement par les tuples triés
if chx =="3": # Affichage de la liste triée
p1=minp
for i,(p,x,y,z,s)in enumerate(Trg):
if p!= p1:
p1=p
print("\n")
print ("Périmètre :","%3i" % p,"%3i" % x,"%3i" % y,"%3i" % z," Aire :",round(sqrt(s)/4,3))
return Trg
def Tri_PerimetresEgaux_AiresEgales_Affichage(minp,maxp,Trg,Dico):
print(" +++ Triangles triés par périmètres égaux croissants ET aires croissantes +++\n\n")
for p in range(minp,maxp):
a,b=Dico[p]
Ordre=[]
if b-a>1: # s'il y a plus d'un triangle de périmètre p
Peri=Trg[a:b]
for i,(p,x,y,z,s)in enumerate(Peri):
Ordre.append((i,s))
Ordre=sorted(Ordre,key=itemgetter(1)) # tri sur 2e élément d'un tuple
for i,(x,s) in enumerate(Ordre): # évite gestion compteur
Trg[a+i]=Peri[x] #remplacement par les tuples triés
p0,x0,y0,z0,s0=Trg[0]
n,cpt=len(Trg),0
for i in range(n):
j=i-1
p0,x0,y0,z0,s0=Trg[j]
p,x,y,z,s=Trg[i]
if s==s0:
if cpt==0: # évite de répéter le 1er triangle, si plus de deux
print ("Aire :", round(sqrt(s)/4,3))
print ("Périmètre :","%3i" % p0,"; côtés :","%3i" % x0,"%3i" % y0,"%3i" % z0)
print ("Périmètre :","%3i" % p,"; côtés :","%3i" % x,"%3i" % y,"%3i" % z)
cpt+=1
else:
if cpt>0:
print()
cpt=0
return
# Menu
stoppe=0
while not stoppe:
Trg,nb,nombre=[],0,0
Dico={}
print (" **************************")
print (" * *")
print (" * Tout sur les triangles *")
print (" * *")
print (" **************************")
print ()
print ()
print (" Voulez-vous :")
print ()
print (" 1. Triangles avec points intérieurs à distances entières")
print (" 2. Triangles avec points intérieurs à 2 distances entières et une 3e non")
print (" 3. Triangles, à périmètre égal, triés par aires croissantes")
print (" 4. Triangles de même aire ET même périmètre")
print (" 5. Triangles de mêmes aires")
print ()
print (" 6. Quitter le programme")
print ()
print (" ** Votre choix : ** ",end="")
while 1:
chx=input()
if chx=="6":
stoppe=1
break
elif chx in "1 2 3 4 5":
print ("\n")
minp,maxp=MinMax()
Trg,Dico=Generation_des_Triangles(minp,maxp,Trg,Dico,chx)
if chx =="1":
print()
Trg=AfficheAiresCroissantes_MemePerimetre(Trg,chx)
Points_Intérieurs_triangles(maxp,nombre,Trg)
break
elif chx =="2":
print()
Trg=AfficheAiresCroissantes_MemePerimetre(Trg,chx)
Distances_Points_Intérieurs_trianglesDeuxPlusUn(maxp,nombre,Trg)
break
elif chx=="3":
AfficheAiresCroissantes_MemePerimetre(Trg,chx)
break
elif chx=="4":
Tri_PerimetresEgaux_AiresEgales_Affichage(minp,maxp,Trg,Dico)
break
else:
Perimètres_et_aires_croissantes(minp,maxp,Trg,Dico)
break
else:
print ("Réponses attendues : 1,2,3,4, 5 ou 6. Veuillez recommencer s'il vous plaît...")
print ("\n")
print ("\n")
break
print ("\n")
print ("\n")
print (" A la prochaine !")
@+
Dernière modification par yoshi (20-07-2014 15:08:36)
Hors ligne
#120 20-07-2014 13:33:18
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
C'est fait.
Au sujet des écart négatifs, je ne comprends pas non plus...
Une question:
S i je veux rechercher par exemple les cas de figure avec n>10 en baissant la limite supérieure de façon à ne pas afficher les cas pour lesquels n<10, comment faire pour accélérer la recherche?
J'essaye depuis tout-à-l'heure de générer les cas sans les stocker ni les faire apparaître dans un ordre particulier, sans y parvenir....
Est-ce que court-circuiter cette partie peut amener un gain de temps?
@+
[EDIT]: messages croisés, je lis....
Dernière modification par 0^0 (20-07-2014 13:49:07)
Hors ligne
#121 20-07-2014 14:07:23
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Triangles ayant un point intérieur à distance entière des sommets
Salut,
J'essaye depuis tout-à-l'heure de générer les cas sans les stocker ni les faire apparaître dans un ordre particulier, sans y parvenir....
Tu entends quoi par là ?
Les cas ne sont pas stockés, juste affichés...
Quel ordre particulier ? Là, je ne vois pas...
A ta demande, les triangles étudiés sont préalablement classés par ordre d'aires croissantes à périmètre égal.
Ce tri préalable doit consommer avant le 1er affichage 1 s ou 2, après rien...
S i je veux rechercher par exemple les cas de figure avec n>10 en baissant la limite supérieure de façon à ne pas afficher les cas pour lesquels n<10, comment faire pour accélérer la recherche?
Tu veux chercher par exemple entre 10-8 et 10-10 ,
Si tu fixes n = 8, le prog va ressortir tous écarts < à 10[tex]-8[/tex] soit 10-9, 10-10...
Entre p = 140 et p = 160 je ne n'ai trouvé que 4 ou 5 cas de [tex]k.10^{-9}[/tex].
Avec le réglage de base de 10-6 par ex, le prog recherche si un écart est < 10-6 peu importe combien puisqu'il affichera tous les k.10-7, k.10-8, k.10-9... trouvés puisque < 10-6
Vu le ratio nombre de cas positifs/nombre de cas traités, si tu précises que tu veux des écarts entre 10-10 et 10-8 tu vas effectuer un test supplémentaire pour chaque cas :
- j'avais trouvé plus 12000 triangles entre p = 5 et p = 80,
- pour chacun d'entre eux on balaie toutes les valeurs possibles de AM ,
- pour chacun des quadruplets (AC,BC,AB,AM), on balaie toutes les valeurs possibles de BM
- pour chacun des quintuplets (AC,BC,AB,AM, BM), tu vas donc effectuer un test de plus pour quel profit ?
@+
Hors ligne
#122 20-07-2014 14:19:41
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Re,
Les ajouts fonctionnent!
Petites erreurs:
"""Calcul de la racine carrée de x
D'après http://python.jpvweb.com/mesrecettespython/doku.php?id=math_decimal""" -----> ne pas oublier les """ à la fin de la note..
ligne 112 pas de 'é' dans 'n=ChoixLimiteSupérieure()' -----> écrire: 'n=ChoixLimiteSuperieure()'
@+
Hors ligne
#123 20-07-2014 14:45:30
- 0^0
- Membre
- Inscription : 24-06-2014
- Messages : 325
Re : Triangles ayant un point intérieur à distance entière des sommets
Salut,
Ce tri préalable doit consommer avant le 1er affichage 1 s ou 2, après rien...
Mon idée était d'afficher les cas sans la procédure de tri ni de classement, dans le but de gagner du temps, de les laisser s'afficher au fur et à mesure comme ils viennent. Mais tu sembles dire que cela ne fait pas gagner grand chose... Si tel est le cas, rien à changer alors! C'est bon.
Par contre pour ce qui est de classer les triangles par aires décroissantes j'ai essayé ton astuce de mettre 'reverse=True', ça ne marche pas, je ne sais pas pourquoi...
Pour le reste j'avais bien compris, pas la peine de fixer une limite inf, cela n'apporte absolument rien en effet.
@+
Hors ligne
#124 20-07-2014 15:07:40
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 17 385
Re : Triangles ayant un point intérieur à distance entière des sommets
Salut,
Pour les """, c'est le collage qui déconne : il colle :
"\"\"
En python on utilise \ pour continuer les lignes de code à la ligne suivante quand c'est trop long...
J'avais vu et refait un copier/coller sans vérifier : apparemment, même motif, même punition...
Je vais corriger à la main dans le code posté.
Tiens je mets trois """ pour voir :
bliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"""
Il ne me le fait pas ????
Présence de l'URL ?
bliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii http:\\www.bibmath.net"""
Non plus...
Curieux...
Bin ch'sais pas...
Quant à l'accent : sur ma machine, il n'y est pas, j'avais rencontré l'erreur, copié le nom de la def après sa déclaration def ...
Et je la retrouve là...
Qu'est-ce que j'ai bien pu bricoler ?
Parce que je ne poste pas de code qui ne tourne pas : ils sont testés plusieurs fois avant et des erreurs aussi évidentes auraient été décelées (ce qui a été le cas pour ChoixLimiteSupérieure... d'ailleurs).
N-B Python est sensible à la casse : ChoixLimiteSuperieure et ChoixlimiteSuperieure sont deux noms différents...
@+
Hors ligne







