Page 6 sur 7

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 17 Oct 2019, 08:51
de Krevo_
J'ai re-testé (parce que vu que je l'utilise j'étais quand même assez sûr de moi) avec le programme suivant :

Code: Tout sélectionner
,123456789012345→A
Répéter 15
  Afficher résult Ent(10A
  10A-Ent(10A→A



http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F90B2E313233343536373839303132333435004200F901F911313500F901F90E8331304200F901F90B313042A783313042004200F901F912F901F903F901F902

... qui affiche successivement les décimales : 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4 et enfin 5 (15e décimale).
(Après c'est l'émulateur casio de la fx-92, mais normalement c'est pareil que la vraie machine que je n'ai pas ....)
Si on teste d'aller plus loin, on affiche alors que des 0 (quelqueque soit les chiffres mis en 16e, 17e, .... n-ième décimale).

J'essaye d'exploiter ce que j'ai (j'aurais utilisé des listes, des chaines ou des matrices sur d'autres modèles) ... pour "compresser" et dessiner le + possible avec le moins d'octets possibles. C'est pas ce que les participants du concours essayent tous de faire ;-) ?
Vu les contraintes de la machine, .... c'est juste pour le défi technique. Sinon, il existe d'autres trucs moins contraignants et plus amusant .

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 17 Oct 2019, 09:17
de ptijoz
Oui c'est sur que lire un fichier bmp en entrée c'était plus simple :)
sinon oui sur la vrai machine (tu peux en avoir une pour 15€ ou à la gagner si elle est en lot ?) ton code fonctionne sauf pour ,999999999999999 mais comme tu ne noircis pas tout...

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 17 Oct 2019, 09:33
de Lephe
Pour répondre à ce problème, j'ai modifié mon lexer comme proposé. Désormais, le token de type T.CONST possède deux paramètres : la valeur de type float, puis le texte associé de type str (pour les entrées texte) ou bytes (pour les entrées URL).

Code: Tout sélectionner
% echo "-.34e1 ." | ./fx92.py -s - --debug=lexer
    1: MINUS
    2: CONST(3.4) [typed as .34e1]
    3: CONST(0.0) [typed as .]
    4: PARAM

% echo -n "c02e33342d312e00" | ./fx92.py -u - --debug=lexer
    1: MINUS
    2: CONST(3.4) [typed as b'.34-1']
    3: CONST(0.0) [typed as b'.']
    4: PARAM

Dans le second exemple, le "e" de l'exposant apparaît sous la forme "-" : c'est normal, l'octet utilisé pour encoder le "e" par Casio (2D) est celui du "-" en ASCII. ^^

Critor devrait donc pouvoir adapter facilement son script pour produire une sortie fidèle. Désolé pour le délai de traitement de mon côté. :)

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 17 Oct 2019, 11:32
de critor
ptitjoz a écrit:
Krevo_ a écrit:Par contre tu parle de 13 chiffres significatifs, mais mes essais m'ont montré que je pouvais exploiter jusqu'au 15e chiffres après la virgule.

voila ce que dit la doc de Casio

Image

Donc si tu travailles avec le 15eme chiffre, tu risques d'avoir des problèmes d'arrondi de temps à autre...


Edit Sinon pour l'outil pour récupérer les scripts dans l'émulateur c'est Python2 ou Python3 qu'il faut utiliser ?


Je ne fais jamais confiance à la doc, parce qu'elle est commerciale et non technique; je teste moi-même.
Elle est donc imprécise, usuellement dans le sens qui arrange le constructeur, et ne précise pas non plus les conditions de test qui peuvent varier d'un constructeur ou même modèle à un autre.
ImageImage
Les 15 chiffres significatifs sont manifestement faux. Peut-être qu'il faut comprendre "jusqu'à 15 chiffres significatifs dans certains cas".

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 17 Oct 2019, 11:37
de critor
Krevo_ a écrit:J'essaye d'exploiter ce que j'ai (j'aurais utilisé des listes, des chaines ou des matrices sur d'autres modèles) ... pour "compresser" et dessiner le + possible avec le moins d'octets possibles. C'est pas ce que les participants du concours essayent tous de faire ;-) ?
Vu les contraintes de la machine, .... c'est juste pour le défi technique. Sinon, il existe d'autres trucs moins contraignants et plus amusant .

Je n'ai pas voulu te blesser, désolé si tu l'as ressenti ainsi. :)

D'autres candidats encodent effectivement le dessin sous forme de nombres.
Mais pourquoi ne pas le faire sous forme d'entiers ?
Cela éviterait tous les risques de la virgule flottante, car tu n'as aucune garantie que son encodage interne soit en base décimale et non binaire.

De façon générale, les tests/stockages sous forme de nombres décimaux sont à éviter, car approximatifs. Un test d'égalité par exemple a toutes les chances d'échouer. Tu pourras d'ailleurs remarquer qu'à part pour le score final, les programmes du 3ème défi ne travaillent que sur des entiers.

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 17 Oct 2019, 11:55
de Krevo_
J'ai pris ton code avec l=13 et j'ai mis l=15 mais j'ai vu 1 seul chiffre de différence (ça devient subtil) dans l'ensemble du programme.
Code: Tout sélectionner
,151334234231211→M

est devenu
Code: Tout sélectionner
,151334234231210→M

J'ai généré une macro .mrf en qui recopie le chiffre fourni par le lexer en mettant :

Code: Tout sélectionner
                       ndStr = str(t.args[0])
                       for i in range(2, len(ndStr)) :
                           addkey(K_0+(ord(ndStr[i])-48))
                           s+="["+ndStr[i]+"]"


(à la place de ton bloc "while(nd and l>0):")

Pour utiliser des entiers, ... je vais devoir réécrire les parties de programme concernés. Bon, cela dit je fait que ça réécrire des bouts depuis le début ... c'est comme ça que l'on améliore sa participation :-) Mais ok je veux bien essayer !!

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 17 Oct 2019, 12:10
de critor
Non mais je disais ça pour toi.
Reste avec des flottants si tu préfères, j'exploiterai le nouveau lexer dès que possible. :)

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 17 Oct 2019, 12:18
de ptijoz
Krevo_ a écrit:Pour utiliser des entiers, ... je vais devoir réécrire les parties de programme concernés. Bon, cela dit je fait que ça réécrire des bouts depuis le début ... c'est comme ça que l'on améliore sa participation :-) Mais ok je veux bien essayer !!

Je m'étais bien demandé pourquoi tu n'utilisais pas les entiers car c'est fiable comme les booléens et c'est vrai que la comparaison de tests décimaux c'est source de tracas.

Perso j'ai bien écrit un algo qui reproduit toute l'image (j'arrive à en tester une partie) mais je n'arrive pas à contourner la limitation de mémoire donc je sèche :warning: .Faut que je creuse mais la dead line arrive trop vite :( et je crains d'être très mal placé :D mais ce n'est pas grave, et comme tu dis, c'est comme cela que l' on progresse en apprenant toujours.
Je pense que tu va y arriver !

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 17 Oct 2019, 20:58
de critor
Voilà, le convertisseur est à jour pour utiliser le nouveau paramètre numérique du Lexer :
viewtopic.php?p=246387#p246387

Re: Outils communautaires de programmation fx-92 SC+

Message non luPosté: 23 Oct 2019, 17:02
de critor
Ah, encore besoin d'un peu de travail sur le lexer. ;)

L'une des dernières participations utilise le token dédié à la puissance 2 (0xD5).