Épreuve concours Python un peu dur..
Résolu
LeProgrammeurdu93
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Salut ! J'ai un exercice à faire en Python mais je comprends rien du tout ! J'espère que vous pourrez m'aider d'autant plus que j'ai un peu oublié le python. C'est un énoncé en Python bien que pouvant être utilisé sur des calculatrices (les nouvelles avec un module Python) Merci !
Voici l'énoncé :
"Tu as 252 lampes contrôlées par 30 interrupteurs progressifs, ce qui signifie que chaque interrupteur peut être de complètement éteint (0) à complètement allumé (1) en passant par toutes les valeurs intermédiaires (0.5 soit à moitié allumé, 0.1 soit presque éteint...).
Selon la façon dont tu positionnes les interrupteurs, les lampes s'éclairent plus ou moins fort, et ton but est d'envoyer un max de lumière pour faire marcher la boule disco ! Attention à ne pas consommer, et surtout à ne pas gaspiller trop d'électricité...
Le lien entre les interrupteurs et les ampoules est fait par le programme d'évaluation qui calcule un score en échange de la position de toutes les interrupteurs progressifs. À toi de comprendre comment il marche, et comment le tirer à ton avantage !"
Le script évoqué dans l'énoncé, quant à lui, est :
Merci encore de votre aide et soutien !
Voici l'énoncé :
"Tu as 252 lampes contrôlées par 30 interrupteurs progressifs, ce qui signifie que chaque interrupteur peut être de complètement éteint (0) à complètement allumé (1) en passant par toutes les valeurs intermédiaires (0.5 soit à moitié allumé, 0.1 soit presque éteint...).
Selon la façon dont tu positionnes les interrupteurs, les lampes s'éclairent plus ou moins fort, et ton but est d'envoyer un max de lumière pour faire marcher la boule disco ! Attention à ne pas consommer, et surtout à ne pas gaspiller trop d'électricité...
Le lien entre les interrupteurs et les ampoules est fait par le programme d'évaluation qui calcule un score en échange de la position de toutes les interrupteurs progressifs. À toi de comprendre comment il marche, et comment le tirer à ton avantage !"
Le script évoqué dans l'énoncé, quant à lui, est :
mrandmax=2147483647 mrand=0 def mfloor(f): return round(f)-(round(f)>f) def mceil(f): return round(f)+(round(f)<f) def mseed(s): global mrand mrand=s%mrandmax def mrandom(): mseed(mrand*16807) return mrand/mrandmax def muniform(mini,maxi): return mrandom()*(maxi-mini)+mini def mrandint(mini,maxi): return round(muniform(mceil(mini),mfloor(maxi))) mfmax=93 def f2mf(f): return round(f*mfmax) def mf2f(n): return float(n/mfmax) def smf(l): s="" for k in range(len(l)): s=s+chr(33+l[k]) return s def bitand(a,b): return a&b mseed(42) st=[252,30,0,0,0,0,0,21] sla=[0]*st[0] ll=[f2mf(0)]*st[0] ls=[f2mf(0)]*st[1] for k in range(st[0]): sla[k]=mrandint(0,2**st[1]-1) def ist(l): r=-1 for k in range(len(l)): r=pot(k,mf2f(ord(l[k])-33),k>=len(l)-1) return r def pst(s,d): li=["All+Grill:",str(st[3])+"+"+str(st[6])+"/"+str(st[0]),"Alimentat:",str(mf2f(st[2])),"Pertes :",str(mf2f(st[5])),"Gaspillag:",str(mf2f(st[4])),""] if d: for k in range(0,st[0],2*st[7]): t="" for j in range(k,k+st[7]): t=t+" 698"[(f2mf(1)<=ll[j]<f2mf(2))*2+(f2mf(1)<=ll[j+st[7]]<f2mf(2))] print(t) for k in range(1,len(li),2): print(li[k-1]+li[k]) ss="Score : "+str(s) if d: while len(ss)<22: ss=ss+" |"[len(ss)==21] ss+=li[len(li)-1] return ss def setst(k,v): global st st[k]=v def setll(k,v): global ll ll[k]=v def setls(k,v): global ls ls[k]=v def setcode(v): global code code=v def pot(k,v=1,d=True): if k>=0 and k<st[1]: v=f2mf(max(min(v,1),0)) setst(2,st[2]+v-ls[k]) for l in range(st[0]): if bitand(sla[l],2**k): ol=ll[l] setll(l,ll[l]+v-ls[k]) setst(3,st[3]+((f2mf(1)<=ll[l]<=f2mf(2)) and ((ol<f2mf(1)) or (ol>f2mf(2))))-(((ll[l]<f2mf(1)) or (ll[l]>f2mf(2))) and (f2mf(1)<=ol<=f2mf(2)))) setst(4,st[4]+max(ll[l]-f2mf(1),0)-max(ol-f2mf(1),0)) setst(5,st[5]+ll[l]*(ll[l]<f2mf(1))-ol*(ol<f2mf(1))) setst(6,st[6]+((f2mf(2)<ll[l]) and (ol<=f2mf(2)))-((ll[l]<=f2mf(2)) and (ol>f2mf(2)))) setls(k,v) s=float(st[3]-mf2f(st[2]+st[6]/2+st[4]/5+st[5]/10)) c=smf(ls) setcode(c) ss=pst(s,d) print(str(st[1])+" potentiometres") print("controlent "+str(st[0])+" lampes.") print("Allumes-en un max !") print("Syntaxe:pot(0-"+str(st[1]-1)+",0-1)") print("Exemple:pot(3,0.8)met") print("le potard 3 a 80%.")
Merci encore de votre aide et soutien !
A voir également:
- Épreuve concours Python un peu dur..
- Cloner disque dur - Guide
- Defragmenter disque dur - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Chkdsk disque dur externe - Guide
- Citizen code python avis - Accueil - Outils
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, l'énoncé me semble très clair: À toi de comprendre comment il marche, et comment le tirer à ton avantage: que ne comprends-tu pas?
nous demandes-tu de faire l'exercice à ta place?
nous demandes-tu de faire l'exercice à ta place?
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonne chance pour ta participation au triconcours de rentrée de Planète Casio et TI-Planet!
connais-tu la différence entre un exercice et un concours?
connais-tu la différence entre un exercice et un concours?
Si vous pouviez m'aider pour juste le comprendre... merci
quand tu auras compris, tu devras positionner les 30 interrupteurs pour obtenir le maximum de lumière avec le minimum d'électricité.