π
<-
Chat plein-écran
[^]

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

Online

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: 6%
 
Posts: 35491
Images: 9480
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Online

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: 6%
 
Posts: 35491
Images: 9480
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

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: 0.9%
 
Posts: 2011
Joined: 13 Dec 2013, 16:35
Gender: Not specified

Online

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: 6%
 
Posts: 35491
Images: 9480
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Online

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: 6%
 
Posts: 35491
Images: 9480
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

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 1601 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 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 23.4%
 
Posts: 66
Joined: 11 Mar 2015, 20:43
Gender: Not specified

Online

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: 6%
 
Posts: 35491
Images: 9480
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

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 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 23.4%
 
Posts: 66
Joined: 11 Mar 2015, 20:43
Gender: Not specified

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 1505 times
Bonjour,

ma participation au concours.
User avatar
ggauny@live.frPremium
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 23.4%
 
Posts: 66
Joined: 11 Mar 2015, 20:43
Gender: Not specified

Online

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: 6%
 
Posts: 35491
Images: 9480
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

PreviousNext

Return to News Divers

Who is online

Users browsing this forum: No registered users and 6 guests

-
Search
-
Featured topics
L'OS 5.5 de la TI-83 Premium CE / 84 Plus CE supprime l'assembleur - la plupart des jeux et certains programme ne fonctionneront plus
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Découvre les nouvelles fonctionnalités en Python de l'OS 5.5 pour la 83PCE/84+C-T Python Edition
Comparaisons des meilleurs prix pour acheter sa calculatrice !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

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.
311 utilisateurs:
>299 invités
>6 membres
>6 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)