π
<-
Chat plein-écran
[^]

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

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

Message non lude 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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.3%
 
Messages: 41494
Images: 14630
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

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

Message non lude 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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.3%
 
Messages: 41494
Images: 14630
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

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

Message non lude 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.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

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

Message non lude 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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.3%
 
Messages: 41494
Images: 14630
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

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

Message non lude 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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.3%
 
Messages: 41494
Images: 14630
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

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

Message non lude 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 Kio) Vu 3881 fois
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.
Avatar de l’utilisateur
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 43.4%
 
Messages: 283
Inscription: 11 Mar 2015, 20:43
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

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

Message non lude critor » 24 Sep 2018, 11:04

ggauny@live.fr a écrit:@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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.3%
 
Messages: 41494
Images: 14630
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

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

Message non lude ggauny@live.fr » 24 Sep 2018, 11:58

Merci pour votre réponse.
Avatar de l’utilisateur
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 43.4%
 
Messages: 283
Inscription: 11 Mar 2015, 20:43
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

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

Message non lude ggauny@live.fr » 25 Sep 2018, 12:28

TiP.png
TiP.png (17.07 Kio) Vu 3785 fois
Bonjour,

ma participation au concours.
Avatar de l’utilisateur
ggauny@live.frPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 43.4%
 
Messages: 283
Inscription: 11 Mar 2015, 20:43
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

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

Message non lude 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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.3%
 
Messages: 41494
Images: 14630
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

PrécédenteSuivante

Retourner vers News Divers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 50 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1552 utilisateurs:
>1531 invités
>16 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)