T: / Corrigés des challenges / Python
3 résolutions issues directement du code des participants. 3 approches différentes.
Quatrième corrigé des challenges de l’histoire originale Greenoïd, créée à l’occasion de la Battle Dev Thales 2024.
Il était question dans ce challenge de d’abord trier certaines valeurs, puis réaliser des moyennes, puis suivre des formules pour réaliser 2 calculs. Il fallait afficher les valeurs finales calculées dans le bon ordre.
Je vous propose ici les solutions des 3 premiers du classement final de la Battle Dev. Python a été utilisé pour les 3 résolutions. On va donc avoir ici du code « compact », réalisé dans le cadre d’une compétition de programmation, avec sans doute quelques bonnes pratiques laissées de côté… Mais ces 3 résolutions vont permettre de montrer comment un même problème peut être résolu avec des approches algorithmiques différentes !
import math
def rem(l):
l.remove(min(l))
l.remove(max(l))
def val(l):
return math.floor(sum(l) / len(l))
rem(co2)
rem(water)
rem(deforestation)
rem(agricultural)
rem(plastic)
rem(renewable)
P = math.floor(((val(co2) + val(plastic)/ 1000) /2) * (1 - val(renewable)/100))
R = math.floor(((100 - val(water)/10) + (100 - val(deforestation)/100) + val(agricultural) + val(renewable)) / 4)
if (P > R):
print(R,P,sep="_")
else:
print(P,R,sep="_")
Un peu d’explications :
import math
def m(l):
return math.floor((sum(l) - min(l) - max(l)) / (len(l) - 2))
p = math.floor((m(co2) + m(plastic) / 1000) / 2 * (1 - m(renewable) / 100))
r = math.floor(((100 - m(water)/10)+(100-m(deforestation)/100)+m(agricultural)+m(renewable))/4)
print(f"{min(p,r)}_{max(p,r)}")
Un peu d’explications :
for k in "co2 water deforestation agricultural plastic renewable".split():
z = globals()[k]
z.sort()
z = z[1:-1]
globals()[k] = sum(z)//len(z)
P = int((co2 + plastic/1000)/2*(1-renewable/100))
R = int(((100-water/10) + (100-deforestation/100) + agricultural + renewable)/4)
print(*sorted((P,R)), sep="_")
Un peu d’explications :
Et voilà comment résoudre un challenge avec 3 approches différentes, et en puisant dans les possibilités du langage !
Other content to discover