π
<-
Chat plein-écran
[^]

Triconcours de rentrée 2018 - défi de Force

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby critor » 22 Sep 2018, 11:15

Le participant n°9 continue à creuser l'écart, avec maintenant 227 points et quelques ! :bj:
https://tiplanet.org/triconcours.php
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 44.5%
 
Posts: 41602
Images: 15148
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby critor » 22 Sep 2018, 11:45

Donc pourquoi est-ce que dans la fonction pot(k,v,d) j'utilise des fonctions dédiées setll(ll) / setls(ls) / setst(st) / setcode(v) pour modifier les variables globales ll / ls / st / code ?
Code: Select all
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

Code: Select all
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)
  if d:
    print("Code info@tiplanet.org (var CAS 'code') :")
    print(c+" ")
  return {c,s}


Ai-je perdu la raison ? Est-ce que je n'ai rien compris à l'instruction global et par extension au Python ? Est-ce que je cherche à vous embrouiller ? Ni l'un ni l'autre.

Une fois de plus, ce code commun à toutes les déclinaisons du script est là pour contourner une anomalie, ici sur HP Prime et peut-être Khicas au code voisin.

Modifions la fonction pot(k,v,d) pour ne plus utiliser ces fonctions d'affectations globales externes :
Code: Select all
def pot(k,v=1,d=True):
  global ll,ls,st,code
  if k>=0 and k<st[1]:
    v=f2mf(max(min(v,1),0))
    st[2]=st[2]+v-ls[k]
    for l in range(st[0]):
      if bitand(sla[l],2**k):
        ol=ll[l]
        ll[l]=ll[l]+v-ls[k]
        st[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)))
        st[4]=st[4]+max(ll[l]-f2mf(1),0)-max(ol-f2mf(1),0)
        st[5]=st[5]+ll[l]*(ll[l]<f2mf(1))-ol*(ol<f2mf(1))
        st[6]=st[6]+((f2mf(2)<ll[l]) and (ol<=f2mf(2)))-((ll[l]<=f2mf(2)) and (ol>f2mf(2))))
    ls[k]=v
  s=float(st[3]-mf2f(st[2]+st[6]/2+st[4]/5+st[5]/10))
  c=smf(ls)
  code=c
  ss=pst(s,d)
  if d:
    print("Code info@tiplanet.org (var CAS 'code') :")
    print(c+" ")
  return {c,s}


Et bien voilà, bien joué, maintenant ça ne fonctionne plus du tout sur HP Pime, tout appel à pot() renvoyant une erreur.

Utilisons le débogueur pas à pas pour comprendre ce qui se passe dans cette fonction, via un appel pot(3,1,True).

Nous arrivons donc à l'exécution la nouvelle ligne global avec cet environnement :
Image
Existent donc les variables locales définies par les paramètres d'appel :
k=3
v=1
d=True


Passons à la ligne suivante en exécutant la ligne global, grâce au bouton tactile Palier :
Image
Et bien voilà, gros problème, les variables locales passées en paramètres k / v / d n'existent plus. Leurs valeurs ont été perdues.

Toute référence à ces noms de variables dans la suite du script sera évaluée avec la valeur de la variable globale de même nom si existante. A défaut, l'évaluation de k par exemple retournera l'expression 'k'.

Bref, l'exécution du reste du script va ou faire n'importe quoi, ou retourner une erreur

C'est toutefois un bug bien sournois, puisque bizarrement il ne se produit pas avec les fonctions plus simples setll(ll) / setls(ls) / setst(st) / setcode(c), qui de même commencent par une instruction global dans le contexte de variables locales passées en paramètre.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 44.5%
 
Posts: 41602
Images: 15148
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby parisse » 22 Sep 2018, 13:17

La difference etant qu'il n'y a pas de variables locales a setst (en-dehors des arguments). Ceci devrait etre corrige dans Khicas (sur la HP il faudra attendre le prochain firmware...).
Explication: Python declare implicitement les variables d'une fonction comme locales, contrairement a Xcas (Xcas considere toute variable non declaree comme globale et affiche un warning). J'ai donc du ajouter du code pour auto-declarer comme locales les variables non declarees dans une fonction. Mais je n'avais pas teste dans un contexte mixte avec des variables globales declarees explicitement. Or cela provoquait la creation de 2 environnements d'evaluation au lieu d'un, le 2eme masquant le premier, c'est ce bug qui a ete corrige.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 80.1%
 
Posts: 3551
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby critor » 22 Sep 2018, 15:21

Le participant n°9 en 1ère place continue à progresser, avec maintenant 227,6 points et quelques ! :bj:
https://tiplanet.org/triconcours.php
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 44.5%
 
Posts: 41602
Images: 15148
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby critor » 23 Sep 2018, 09:04

Avec pas moins de 6 participations pendant la nuit, le participant n°8 atteint 225,8 points et quelques, passant ainsi de la 3ème à la 2nde place ! :bj:
https://tiplanet.org/triconcours.php
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 44.5%
 
Posts: 41602
Images: 15148
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby ggauny@live.fr » 24 Sep 2018, 08:55

Bonjour,
@M Critor, cet écran est-il normal ??? Que viennent faire ces fonctions
Force_PB.png
Force_PB.png (21.26 KiB) Viewed 4035 times
dans votre application ?
Je me demande si je n'ai pas un problème avec ma Prime(virtuelle).

Merci et bonne journée.

G Gauny.
User avatar
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 45.3%
 
Posts: 288
Joined: 11 Mar 2015, 20:43
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby critor » 24 Sep 2018, 11:04

ggauny@live.fr wrote:@M Critor, cet écran est-il normal ??? Que viennent faire ces fonctionsImage dans votre application ?


Bonjour.

J'ai pareil et je ne sais pas, rien codé en ce sens.
Je suis reparti de l'application que nous avions codée pour le concours de rentrée 2017.
Et à l'époque, c'était notre toute première fois, il est possible que j'ai démarré en clonant une application existante au lieu de partir d'une nouvelle application vide.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 44.5%
 
Posts: 41602
Images: 15148
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby ggauny@live.fr » 24 Sep 2018, 11:58

Merci pour votre réponse.
User avatar
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 45.3%
 
Posts: 288
Joined: 11 Mar 2015, 20:43
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby ggauny@live.fr » 25 Sep 2018, 12:28

TiP.png
TiP.png (17.07 KiB) Viewed 3939 times
Bonjour,

ma participation au concours.
User avatar
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 45.3%
 
Posts: 288
Joined: 11 Mar 2015, 20:43
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Triconcours de rentrée 2018 - défi de Force

Unread postby critor » 25 Sep 2018, 16:57

Vu que c'est public et que n'importe qui pourrait donc la reprendre à son compte, je l'ai prise en compte :
https://tiplanet.org/triconcours.php

Félicitations, pour le moment elle fait partie des 10 meilleures et décrocherait donc un lot ! :bj:

Par contre pour la prochaine fois, merci de transmettre comme les autres la participation par courriel à info@tiplanet.org, avec l'ensemble des informations nécessaires.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 44.5%
 
Posts: 41602
Images: 15148
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

PreviousNext

Return to News Divers

Who is online

Users browsing this forum: No registered users and 33 guests

-
Search
-
Social TI-Planet
-
Featured topics
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Offre de test des nouveautés de rentrée 2024 par Casio. Enseignant(e), reçois gratuitement 1 exemplaire, à ton choix, de la Graph Light ou bien de la Graph Math+
14€ remboursés par Casio sur l'achat de ta calculatrice Graph 35 d'ici le 31 Octobre 2024
10€ remboursés par Casio sur l'achat de ta calculatrice Graph 90+E d'ici le 31 Décembre 2024
10€ remboursés par Casio sur l'achat de ta calculatrice Graph 25 d'ici le 31 Décembre 2024
8€ remboursés par Casio sur l'achat de ta calculatrice Graph Math+ d'ici le 31 Octobre 2024
Reprise de ton ancienne fx-92 Collège ou Graph 25/35/90 à 3€ peu importe son état. Même non fonctionnelle et donc invendable, même ancienne Graph 35 non conforme aux programmes (pas de Python), même ancienne Graph 25/35 inutilisable aux examens (pas de mode examen) et donc invendable. Etiquette de retour fournie, pas de frais de port à payer.
3€ remboursés par Casio sur l'achat de ta calculatrice fx-92 Collège d'ici le 30 Septembre 2024
5€ de remise immédiate sur l'achat de ta calculatrice TI-83 Premium CE Edition Python chez les revendeurs partenaires
4€ de remise immédiate sur l'achat de ta calculatrice TI-82 Advanced Edition Python chez les revendeurs partenaires
3€ de remise immédiate sur l'achat de ta calculatrice TI-82 Advanced chez les revendeurs partenaires
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234567891011121314
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1435 utilisateurs:
>1424 invités
>6 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)