Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #3396
| From | Pierre Maurette <maurette.pierre@free.fr> |
|---|---|
| Newsgroups | fr.comp.lang.python |
| Subject | Re: En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC |
| Date | 2020-12-02 08:58 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <mn.121a7e4c409632ae.79899@free.fr> (permalink) |
| References | <CoqdnTE5mZ1Z3FvCnZ2dnUU798zNnZ2d@giganews.com> <rq76ug$m28$1@gioia.aioe.org> <87mtywr7dr.fsf@izac.org> |
Benoit Izac :
> Bonjour,
>
> Le 02/12/2020 à 05:58, Dominique a écrit dans le message
> <rq76ug$m28$1@gioia.aioe.org> :
>
>> def ma_fonction(t):
>> if t[0]+t[1]>t[2] and t[1]+t[2]>t[0] and t[0]+t[2]>t[1]:
>> return 'Constructible'
>> elif t[0]*t[1]*t[2]==0:
>> return 'PLAT'
>> else:
>> return 'PAS CONSTRUCTIBLE'
>>
>> t=eval(input())
>
> C'est un peu tordu car il faut savoir que l'on attend une entrée de la
> forme « [a, b, c] » (ou n'importe quel objet qui implémente
> « __getitem__() » pour être plus précis)
>
>> print(ma_fonction(t))
>
>> print(ma_fonction([2, 1, 1]))
> PAS CONSTRUCTIBLE <= faux
>
> Un triangle est plat si la somme des longueurs de deux côtés est égale
> à la longueur du troisième côté ; par exemple :
>
> A B C A C A BC
> +---+---+ ou +-------+ ou +-----++
> B
>
> Ma version :
>
> def triangle(a, b, c):
> for cote in (a, b, c):
> opposes = a + b + c - cote
> if opposes < cote: return 'PAS CONSTRUCTIBLE'
> if opposes == cote: return 'CONSTRUCTIBLE PLAT'
> return 'CONSTRUCTIBLE'
A partir de ce point, on peut faire un peu d'analyse géométrique. Le
but est de ne pas itérer. Dire "il existe un coté plus long que la
somme des deux autres" est équivalent à dire "le coté le plus long est
plus long que la somme des deux autres". Ça donne howIsTriangle1. On
peut très facilement trier, ça donne howIsTriangle2.
<code>
JEU2TEST = ((1,1,5), (1,2,1), (1,1,1))
def howIsTriangle1(sidelengths):
maxi, somme = max(sidelengths) << 1 , sum(sidelengths)
return (maxi <= somme, maxi > somme, maxi == somme)
def howIsTriangle2(sidelengths):
maxi, somme = sorted(sidelengths, reverse=True)[0],
sum(sorted(sidelengths, reverse=True)[1:])
return (maxi <= somme, maxi > somme, maxi == somme)
for sidelengths in JEU2TEST:
for f in (howIsTriangle1, howIsTriangle2):
(isCONSTRUCTIBLE, isINCONSTRUCTIBLE, isPLAT) = f(sidelengths)
print ('Cotés: %d, %d, %d\n Le triangle est :\n CONSTRUCTIBLE:
%s\n INCONSTRUCTIBLE: %s\n PLAT: %s' %
(sidelengths + (['Non', 'Oui'][isCONSTRUCTIBLE],
['Non', 'Oui'][isINCONSTRUCTIBLE],
['Non', 'Oui'][isPLAT])))
</code>
--
Pierre Maurette
Back to fr.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC domxav17 <nospam_domxav17@gmail.com.invalid> - 2020-12-01 07:14 -0600
Re: En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC domxav17 <nospam_domxav17@gmail.com.invalid> - 2020-12-01 07:48 -0600
Re: En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC Pierre Maurette <maurette.pierre@free.fr> - 2020-12-01 16:47 +0100
Re: En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC Dominique <zzz@aol.com.invalid> - 2020-12-02 06:01 +0100
Re: En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC Dominique <zzz@aol.com.invalid> - 2020-12-02 05:58 +0100
Re: En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2020-12-02 08:31 +0100
Re: En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC Pierre Maurette <maurette.pierre@free.fr> - 2020-12-02 08:58 +0100
Re: En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC Dominique <zzz@aol.com.invalid> - 2020-12-02 19:17 +0100
Re: En testant les valeurs 5,1,1 obtenu est CONSTRUCTIBLE au lieu dPAS CONSTRUC Dominique <zzz@aol.com.invalid> - 2020-12-02 19:19 +0100
csiph-web