π
<-

Casio Réception lots concours dessin Noël sur Casio Graph Python

New postby critor » 20 Dec 2020, 00:00

Enseignant de matière scientifique en collège ou lycée, jusqu'à mardi 15 décembre Casio t'a permis de participer à un superbe concours de Noël 2020.

Il te suffisait de programmer et envoyer un superbe dessin de Noël sur ta calculatrice Casio ou son émulateur, avec 2 catégories au choix :
  • fx-92+ Spéciale Collège (langage de programmation orienté tracé à la Scratch/Logo)
  • Casio Graph 35+E II ou Graph 90+E avec l'application Python

Les gagnants ont été choisis par Casio et l'ensemble des participants prévenus de leur lot par courriel. Les lots ont maintenant été expédiés et commencent déjà pour partie à être livrés, mais quelle rapidité et efficacité chez Casio ! :bj:

Plusieurs gagnants ayant spontanément partagé des photos de leur cadeau de Noël anticipé, découvrons-les ensemble. :D

1324613245Déjà, pas de perdant. Toutes les participations validées reçoivent un lot de participation illustré ci-contre avec plein de goodies exclusifs : :favorite:
  • 1 sac en toile Casio
  • 1 batterie USB Casio
  • 1 stylo bille Casio
  • 1 clé USB Casio (3,74 Go de capacité, un tout nouveau modèle)
  • 1 catalogue calculatrices Casio (l'édition de rentrée 2020 quasiment introuvable suite à l'annulation de tous les événements cette année)

13244En plus des goodies, Amélie Roy et Thomas Fontaine reçoivent :
  • 1 enceinte Bluetooth Braven 705
  • 1 calculatrice graphique Graph 90+E ou Graph 35+E II au choix (Graph 90+E dans le cas du lot de Thomas présenté ci-contre)

13248En plus des goodies, Alain Ladiesse et Florian Allard (alias Afyu) reçoivent pour leur part :
  • 1 disque dur externe SSD EMTEC X200 (1 To de capacité)
  • 1 calculatrice graphique Graph 90+E ou Graph 35+E II au choix (Graph 90+E dans le cas du lot de Florian présenté ci-contre)

De superbes cadeaux de Noël ô combien mérités, félicitations à vous et merci Casio ! :bj:

Téléchargements :

NumWorks Bêta-test public nouvelle version NumWorks 15.2

New postby Admin » 19 Dec 2020, 10:47

13243Le 4 novembre dernier, NumWorks lançait le bêta-test public de la prochaine mise à jour en version 15 pour sa calculatrice. Il s'agissait très exactement d'une version 15.0.0.

La 10 décembre, tu avais droit à une nouvelle version bêta 15.1.0.

Aujourd'hui voici ton cadeau de Noël NumWorks avant l'heure, une nouvelle version bêta 15.2.0 améliorée à tester. :D

Tu peux donc si tu le souhaites dès maintenant mettre à jour ta calculatrice en version 15.2.0, et profiter gratuitement en avant-première de toutes les formidables nouveautés de la prochaine mise à jour en version 15, nouveautés que nous te rappelons ci-dessous : :bj:
ImageImageImageImageImageImageImage




1) Application Paramètres

Go to top

1319513194Et voici déjà une première nouveauté qui nous saute littéralement aux yeux.

En fin de mise à jour la calculatrice redémarre et nous demande notre langue, comme d'habitude, et puis surprise elle veut également connaître notre pays. :o

Nous allons avoir tout le loisir de nous pencher là-dessus puisque ce même nouveau réglage est également disponible dans l'application Paramètres, avec au choix :
  • Allemagne
  • Canada
  • Espagne
  • Etats-Unis
  • France
  • International
  • Italie
  • Pays-Bas
  • Portugal
  • Royaume-Uni


En effet jusqu'à présent, certaines fonctionnalités de la calculatrice étaient impactées par le choix de la langue. On peut citer le mode examen néerlandais interdisant l'application Python (pour les Pays-Bas dont la réglementation interdit l'accès à tout éditeur de texte) qui n'était disponible qu'en langues anglaises ou néerlandaise.

On pouvait aussi reprocher hors de nos frontières une méthode de calcul des quartiles utilisant une définition spécifique à la France.

Bref, des désagréments d'utilisation dans un contexte international, lier des fonctionnalités à la langue n'était pas une bonne chose, pour les élèves des lycées français à l'étranger, ou plus généralement toute personne préférant utiliser une autre langue que la langue officielle du pays réglementant sa scolarité.

Désormais fini les problèmes, l'option langue ne contrôle comme son nom l'indique que la langue des messages affichés.

C'est le seul choix du pays, comme sur ordinateur, qui influe sur le fonctionnement, avec entre autres :
  • le mode examen néerlandais qui n'est disponible que si on choisit les Pays-Bas
  • le calcul des quartiles dans l'application Statistiques qui utilise la méthode française si l'on choisit la France, et sinon désormais la méthode internationale pour tout autre choix de pays
  • pour les calculs avec unités dans l'application Calculs, les conversions d'unités automatiques qui dans le cas des Etats-Unis privilégieront les unités du système impérial, et les mettront également en avant dans les résultats additionnels


  • et enfin l'organisation des applications à l'écran d'accueil, qui dans le cas des Etats-Unis ne met plus en avant l'application Python :


La NumWorks a dorénavant de quoi s'adapter non seulement aux réglementations et usages de chaque pays, mais également aux besoins et préférences de chaque utilisateur dans un contexte de mobilités internationales, une calculatrice pour les gouverner toutes ! :bj:

Peut-être que cette option serait justement l'occasion de réactiver le formidable moteur de calcul littéral qui avait été supprimé à compter de la version 11.2, justement à cause de réglementations d'examens interdisant cette fonctionnalité au-delà des frontières françaises, et de recommencer à le faire évoluer... une calculatrice littérale à seulement 80€ ce serait fantastique, n'est-ce pas ? :D




2) Application Calculs et boîte à outils

Go to top

Ici dans l'application Calculs nous sommes littéralement gâtés, c'est Noël avant l'heure.

Comme nous l'avons déjà abordé dans la partie précédente, une nouveauté déjà est l'ajout de la gestion des unités du système impérial. Tu les retrouveras dans la boîte à outils avec les autres unités : :)
  • directement dans la catégorie Superficie (acre)
  • dans les catégories Distance, Volume et Masse, en 1er ou 2ème niveau selon ton choix de pays :
    • Distance :
      • in (pouce)
      • ft (pied)
      • yd (yard)
      • mi (mile)
    • Volume :
      • tsp (cuillère à café)
      • tbsp (cuillère à soupe)
      • floz (once fluide)
      • cup (tasse)
      • pt (pinte)
      • qt (quart)
      • gal (gallon)
    • Masse :
      • oz (once)
      • lb (livre)
      • shtn (tonne courte)
      • lgtn (tonne longue)

      De nouvelles unités de température bien plus usuelles que le Kelvin sont également rajoutées, les degrés Celsius et Fahrenheit. :bj:

      Une petite nouveauté non négligeable est que tu ne perds plus le calcul en cours de saisie si tu sors de l'application Calculs, par exemple pour aller copier-coller une donnée présente dans une autre application, très pratique ! :bj:

      Grande nouveauté, la calculatrice gère maintenant le calcul vectoriel. Une nouvelle entrée est disponible en ce sens dans la boîte à outils avec les fonctions dédiées : :bj:
      • dot(,) (produit scalaire)
      • cross(,) (produit vectoriel)
      • norm() (norme)
      Attention, ne sont reconnues en tant que vecteurs et donc acceptées par ces fonctions que les seules matrices colonne, pas les matrices ligne. C'est d'ailleurs dommage pour l'intuitivité.

      Le calcul matriciel bénéficie quant à lui de deux nouvelles fonctions :
      • ref() (forme échelonnée)
      • rref() (forme échelonnée réduite)
      Précisions que les résultats matriciels bénéficient à leur tour de résultats additionnels calculés automatiquement :
      • déterminant
      • inverse
      • forme échelonnée
      • forme échelonnée réduite
      • trace

      Les fonctions gcd(,) et lcm(,) te permettaient jusqu'à présent de calculer les PGCD et PPCM de seulement 2 nombres. Au-delà, tu devais imbriquer plusieurs appels.

      Désormais les fonctions gcd() et lcm() acceptent autant de paramètres que tu veux ! :bj:




3) Application Fonctions

Go to top

Un objectif clairement affiché de la calculatrice NumWorks c'est l'intuitivité. Par exemple dans l'application Fonctions :
  • tu bénéficiais d'un réglage automatique des bornes verticales de la fenêtre
  • dans le cas de fonctions trigonométriques, tu bénéficiais même en prime d'un réglage automatique des bornes horizontales
L'objectif visé était de te garantir une bonne visibilité graphique de tous les éléments pertinents à étudier, sans que tu aies à régler toi-même les bornes de la fenêtre.

Mais voilà, cela ne produisait pas tout-le-temps des résultats optimaux. Notamment en dehors des fonctions trigonométriques l'intervalle sur lequel la fonction était représentée restait par défaut figé sur [-10;10], ce qui pouvait écraser, déformer, ou même rejeter hors fenêtre plusieurs éléments remarquables.

Désormais l'onglet Graphique dispose d'une toute nouvelle barre de menu, avec par défaut une option Auto qui tentera d'ajuster au mieux aussi bien les bornes horizontales que verticales de la fenêtre ! :bj:
Fantastique, on pourrait commencer à se permettre de parler d'intelligence artificielle, et tout ça dans une calculatrice. :o

Si tu souhaites corriger d'éventuelles distortions, tu pourras également choisir d'orthonormer le repère d'une seule touche via ce même menu. :)


Jusqu'à présent, tes possibilités de naviguer rapidement dans la représentation graphique d'une fonction étaient peu intuitives et donc en pratique assez contraintes.

Outre le réglage manuel d'une nouvelle fenêtre, la méthode la plus évidente était de faire suivre la courbe par le curseur, et la fenêtre s'adaptait alors automatiquement lorsque ce dernier en sortait.
Le parcours de la courbe prenait donc du temps, et tes possibilités de navigation étaient contraintes par la sortie du curseur de la fenêtre, ce qui n'était pas toujours possible verticalement.

Tu avais mieux mais dans la fort mal nommée option Zoom.

Plus besoin de réglage fastidieux de la fenêtre ni de curseur pour explorer la représentation graphique désormais, de façon maintenant évidente l'option Zoom est renommée Naviguer.

Tu pourras ici immédiatement faire défiler la fenêtre horizontalement ou verticalement à l'aide des touches fléchées, et toujours zoomer avec les touches
+
et
-
. :bj:




4) Application Suites

Go to top

L'application Suites bénéficie déjà des nouvelles possibilités de fenêtrage automatique décrites précédemment dans la partie Fonctions.

Grande nouveauté, comme cela avait déjà été fait avec les fonctions, les suites définies dans l'application Suites sont maintenant accessibles et utilisables depuis les autres applications. :bj:

Tu pourras les consulter et saisir en écriture naturelle via la touche
var
, ou encore y faire appel directement sous l'écriture parenthésée.
Une belle intégration multipliant les libertés de recherche et résolution de problèmes. :D

Lorsque tu saisissais les expressions pour définir une suite, il t'était possible de faire référence au terme de rang n ou n+1 de la même suite ou d'une autre suite.

Toutefois la vérification syntaxique était très stricte, et t'empêchait d'utiliser un terme utilisant un autre rang de n (n+2, ...) et même pire un terme de rang fixe, particulièrement embêtant dans l'initialisation de certaines suites récurrentes.

La vérification syntaxique a été corrigée, tu as maintenant toute liberté d'utilisation de terme de suites dans tes définitions de suites. :bj:




5) Application Statistiques

Go to top

L'application Statistiques bénéficie elle aussi sur son onglet Graphique des nouvelles possibilités de fenêtrage automatique de l'application Fonctions.

Dans l'application Statistiques, il t'est désormais possible de trier les colonnes de valeurs ou effectifs dans l'ordre croissant. :)

Pour cela il te suffit juste de sélectionner le nom de la colonne avec les touches fléchées, puis de taper
OK
pour accéder au menu contextuel.




6) Application Régressions

Go to top

L'application Régressions bénéficie également de la nouvelle possibilité de trier les colonnes, ainsi que des nouvelles possibilités de fenêtrage automatique. Mais ce n'est pas tout.

Quand tu réalisais une régression linéaire, tu avais droit au calcul du coefficient de détermination te permettant de juger de l'adéquation au modèle de régression en question.

Toutefois, le coefficient n'était pas calculé lorsque l'on choisissait un modèle de régression autre que linéaire.

Désormais, le coefficient est bien calculé pour l'ensemble des modèles de régression gérés. :)




7) Application Python

Go to top

Comme sur d'autres modèles, l'application Python était un peu à part dans le système de la calculatrice. Elle utilise par définition même un système de notation différent de toutes les autres et ne permettait que peu le partage de données, gênant ainsi le processus de recherche et résolution d'un problème, particulièrement dans le cadre des tâches complexes mobilisant diverses compétences et faisant appel à différentes applications.

Pour importer des données dans ton application Python, tu avais la possibilité de copier-coller.

Mais voilà, avec les différences de notation, tu pouvais obtenir des erreurs de syntaxe ou pire des résultats complètement différents et donc faux. :mj:

Et bien bonne nouvelle, cet écueil a été corrigé. :bj:

Les différences de notation sont maintenant corrigées de façon totalement automatique et transparente lors de l'opération de collé (symboles de multiplication, puissance, racine, ...).


Inversement, si tu souhaitais exporter les données de ton application Python par copié-collé, tu rencontrais le même genre de difficultés. :mj:

Et ici encore bonne nouvelle, la transcription automatique est également gérée dans ce sens-là désormais ! :bj:




Une fois de plus NumWorks nous signe là une superbe mise à jour, améliorant encore et toujours gratuitement les possibilités de ta calculatrice favorite, félicitations ! :bj:

Nous en profitons pour remercier les contributeurs bénévoles ayant aidé à l'élaboration de cette mise à jour :

Liens :
  1. inscription comme bêta-testeur
  2. Mise à jour (demander l'installation de la version bêta, puis suivre les instructions)

TI-z80 Découverte prototype TI-82 Advanced DVT avec OS 5.0.0.0027

New postby critor » 18 Dec 2020, 23:02

13242Sortie pour la rentrée 2015, la TI-82 Advanced est toujours venue préchargée avec le même OS en version 5.0.0.0028 compilée le 1er janvier 2015.

Texas Instruments n'a jamais publié de mise à jour pour ce modèle depuis maintenant donc plus de 5 ans.

Et pourtant l'OS 5.0.0.0028 pour TI-82 Advanced n'est pas dénué de défauts.

Un bug visuel très vilain concerne le menu caractères disponible en langue française (par défaut).

Dès que l'on bouge le curseur de sélection de caractère, c'est le festival :
  • curseur qui laisse des traces...
  • contraste qui s'affole (s'assombrit, s'éclaircit, fait un flash...)
  • caractères du menu qui s'effacent...
  • caractères parasites qui apparaissent...


Et tu n'es pas à l'abri d'un reset effaçant la mémoire après avoir terminé de valider ta sélection de caractères dans ce contexte délirant. :p

46324615Le pire étant qu'il s'agit d'une erreur commise par Texas Instruments au tout dernier moment.

En effet le modèle TI-84 Plus précédent ne souffrait pas de ce bug.

Mais surtout, ce même bug n'était pas non plus présent sur le prototype TI-82 Advanced DVT que nous avions eu l'honneur et le plaisir de tester en avant-première. De numéro de série K-DVT-157, il était pour sa part muni d'une version 5.0.0.0014.

Si Texas Instruments pour une raison que nous ignorons ne souhaite plus dépenser le moindre centime pour la TI-82 Advanced, la seule solution serait de réinstaller une version intermédiaire entre 5.0.0.0014 et 5.0.0.0028. Faut-il encore pouvoir en récupérer une, puisqu'elles n'ont jamais été publiées.

Et bien justement, Frédéric Desautels a trouvé à la revente un autre prototype DVT de la TI-82 Advanced.

De numéro de série K-DVT-211, il est donc beaucoup plus récent que le nôtre. Et justement, il fait tourner une version 5.0.0.0027 ! :D

Si le bug n'y est pas présent et si nous réussissons à extraire l'OS 5.0.0.0027, nous allons peut-être pouvoir enfin te fournir de quoi corriger ta TI-82 Advanced ! :bj:

A bientôt, on espère... ;)

Casio Résultats concours dessin Noël Graph Python et fx-92+SC

New postby critor » 18 Dec 2020, 15:03

Enseignant de matière scientifique en collège ou lycée, jusqu'à ce mardi 15 décembre Casio t'a permis de participer à un superbe concours de Noël 2020.

Il te suffisait de programmer et envoyer un superbe dessin de Noël sur ta calculatrice Casio ou son émulateur, avec 2 catégories au choix :
  • fx-92+ Spéciale Collège (langage de programmation orienté tracé à la Scratch/Logo)
  • Casio Graph 35+E II ou Graph 90+E avec l'application Python

9668A gagner dans chacune des 2 catégories :
  • pour le meilleur dessin, un superbe lot de 180€ de valeur médiane : 1 disque dur externe SSD de 1 To de capacité + 1 calculatrice graphique Casio Graph 90+E ou Graph 35+E II au choix
  • pour le 2ème meilleur dessin, un non moins superbe lot de 150€ de valeur médiane : 1 enceinte bluetooth + 1 calculatrice graphique Casio Graph 90+E ou Graph 35+E II au choix
    129871302313021
  • pour tous les autres pas de perdant avec un superbe lot de participation : 1 batterie externe + 1 clé USB

Les gagnants ont maintenant été choisis par Casio, et l'ensemble des participants prévenus de leur lot par courriel.

13237Dans une actualité précédente nous te présentions les dessins de Noël sur Graph 90+E gentiment partagés par plusieurs candidats.

De façon tout à fait officieuse nous te partagions les résultats du concours, deux personnes parmi notre petit échantillon de candidats ayant par chance affirmé avoir gagné :
  1. Florian Allard alias Afyu
    13236
  2. Thomas Fontaine
Félicitations à tous les deux, nous sommes fiers de vous ! :bj:

Retourne donc à l'actualité précédente pour consulter les diverses explications apportées sur chacun de ces scripts.

Casio vient de publier les résultats officiels, avec donc désormais en prime les dessins gagnants sur fx-92+ Spéciale Collège : :D
  1. Alain Ladiesse
  2. Amélie Roy
Félicitations à eux aussi ! :bj:

Nous regrettons toutefois ici de ne pas disposer d'un partage des scripts correspondant aux dessins en question. Dommage, vu le tracé extrêmement bien fourni sur l'écran large de la fx-92+ Spéciale Collège, ils auraient sûrement été eux aussi fort intéressant à étudier. ;)

Téléchargements :

Source : https://twitter.com/CasioFrance/status/ ... 3852988416

Casio Scripts & résultats concours dessin Noël Casio Graph Python

New postby critor » 17 Dec 2020, 14:33

Enseignant de matière scientifique en collège ou lycée, jusqu'à ce mardi 15 décembre Casio t'a permis de participer à un superbe concours de Noël 2020.

Il te suffisait de programmer et envoyer un superbe dessin de Noël sur ta calculatrice Casio ou son émulateur, avec 2 catégories au choix :
  • fx-92+ Spéciale Collège (langage de programmation orienté tracé à la Scratch/Logo)
  • Casio Graph 35+E II ou Graph 90+E avec l'application Python

9668A gagner dans chacune des 2 catégories :
  • pour le meilleur dessin, un superbe lot de 180€ de valeur médiane : 1 disque dur externe SSD de 1 To de capacité + 1 calculatrice graphique Casio Graph 90+E ou Graph 35+E II au choix
  • pour le 2ème meilleur dessin, un non moins superbe lot de 150€ de valeur médiane : 1 enceinte bluetooth + 1 calculatrice graphique Casio Graph 90+E ou Graph 35+E II au choix
    129871302313021
  • pour tous les autres pas de perdant avec un superbe lot de participation : 1 batterie externe + 1 clé USB

Les gagnants ont maintenant été choisis par Casio, et l'ensemble des participants prévenus de leur lot par courriel.

Plusieurs participants ont partagé leurs scripts Python et nous allons te les présenter ci-dessous, ainsi que de façon tout à fait officieuse les résultats du concours puisque par pur hasard les meilleurs dessins choisis par Casio en font partie ! :bj:

1323413235Voici ci-contre ma propre participation, une forêt de Noël, envoyée juste pour le plaisir. ;)
Je ne souhaitais piquer de lot à personne et je l'ai bien dit, et c'est parfait puisque je gagne bien le seul lot de participation. :)

Ce script dispose d'un mode monochrome, et est compatible à la fois Graph 35+E II et Graph 90+E, même si c'est sur cette dernière qu'il révèle son plein potentiel.

Voici l'astuce utilisée pour détecter le type d'écran :
Code: Select all
def init_casioplot():
  global color_screen, screen_w, screen_h
  set_pixel(0, 0, (0, 0, 255))
  col = get_pixel(0, 0)
  color_screen = col[0] != col[2]
  screen_w, screen_h = color_screen and (384, 192) or (128, 64)


Dans l'ordre, mon script utilisant la bibliothèque de tracé par pixels casioplot :
  1. fait tomber la nuit : Il utilise ici 2 dégradés dans les tons de bleu pour représenter le sol et le ciel.
  2. allume les étoiles (pixels blancs)
  3. plante une forêt de sapins - nous allons y revenir
  4. décore mon plus beau sapin : des disques de rayon 2 selon 3 couleurs de remplissage alternées, avec une couleur voisine pour la bordure rajoutant un peu de relief
  5. saupoudre le tout de neige : des disques de rayon 1

La bibliothèque casioplot offre un nombre assez restreint de fonctions de tracé :
  • clear_screen() pour effacer l'écran en blanc
  • set_pixel(x,y,couleur) pour allumer un pixel dans une couleur (R,G,B) au choix
  • draw_string(x,y,string,couleur,taille) pour écrire du texte dans une couleur RGB et selon une taille de police au choix ("small", "medium" ou "large")

Ce n'est absolument pas un défaut, au contraire cela permet un travail absolument passionnant : la construction et optimisation de fonctions pour tracer chaque primitive. J'ai donc rajouté de quoi tracer des cercles, disques, mais également segments pour les sapins :
Code: Select all
def draw_line(x1, y1, x2, y2, c):
  m, a1, b1, a2, b2 = 0, int(x1), int(y1), int(x2), int(y2)
  if (x2 - x1) ** 2 < (y2 - y1) ** 2:
    m, a1, a2, b1, b2 = 1, b1, b2, a1, a2
  if min(a1, a2) != a1: a1, b1, a2, b2 = a2, b2, a1, b1
  for k in range(a2 - a1 + 1):
    a, b = a1 + k, int(b1 + (b2 - b1) * k / ((a2 - a1) or 1))
    set_pixel((a, b)[m], (b, a)[m], c)

def draw_ellipse(x, y, rx, ry, c):
  for h in range(-int(ry), int(ry)+1):
    w = sqrt(max(0, rx*rx*(1-h*h/ry/ry)))
    x1, x2 = int(x - w), int(x + w)
    yc = int(y + h)
    set_pixel(x1, yc, c)
    set_pixel(x2, yc, c)
  for w in range(-int(rx), int(rx)+1):
    h = sqrt(max(0, ry*ry*(1-w*w/rx/rx)))
    y1, y2 = int(y - h), int(y + h)
    xc = int(x + w)
    set_pixel(xc, y1, c)
    set_pixel(xc, y2, c)

def fill_ellipse(x, y, rx, ry, c):
  for h in range(-int(ry), int(ry)+1):
    w = sqrt(max(0, rx*rx*(1-h*h/ry/ry)))
    x1, x2 = int(x - w), int(x + w)
    yc = int(y + h)
    draw_line(x1, yc, x2, yc, c)

def draw_circle(x, y, r, c):
  draw_ellipse(x, y, r, r, c)

def fill_circle(x, y, r, c):
  fill_ellipse(x, y, r, r, c)


La construction des sapins utilise des similitudes, transformations géométriques conservant les rapports de distances.
Une similitude peut se décomposer en une isométrie (transformation conservant les distances : translation, rotation, ...) la plupart du temps suivie d'une homothétie (agrandissement ou réduction).

Plus précisément, en partant d'un couple de seulement 2 points que l'on va appeler le tronc, 5 similitudes sont appliquées pour créer 5 branches (en bas à gauche, à gauche, en haut, à droite, en bas à droite).

En itérant le même processus sur chacune de ces branches, on fait ainsi pousser l'arbre, le développant dans ces 5 directions.

Par exemple, sur la capture couleur ci-contre, nous avons de gauche à droite des arbres avec :
  • 1 itération
  • 3 itérations
  • 5 itérations (profitant pleinement des 1 Mio de mémoire de tas Python ;) )
  • 4 itérations
  • 3 itérations

Pour l'exécution sur Graph 35+E II nous avons dû limiter le nombre d'itérations afin de ne pas exploser la mémoire de tas Python (heap) ici limitée à 100 Kio. Nous avons ici de gauche à droite :
  • 0 itération (donc le tronc initial nu)
  • 1 itération (donc le tronc avec ses 5 branches initiales)
  • 3 itérations
  • 2 itérations
  • 0 itération

Code: Select all
from math import pi, sin, cos, exp, sqrt
import matplotlib.pyplot as plt
from random import *
from casioplot import *

def init_casioplot():
  global color_screen, screen_w, screen_h
  set_pixel(0, 0, (0, 0, 255))
  col = get_pixel(0, 0)
  color_screen = col[0] != col[2]
  screen_w, screen_h = color_screen and (384, 192) or (128, 64)

def transform(x, y):
  f = screen_h * 45 // 64
  return (x*f,screen_h-1-y*f)

def draw_line(x1, y1, x2, y2, c):
  m, a1, b1, a2, b2 = 0, int(x1), int(y1), int(x2), int(y2)
  if (x2 - x1) ** 2 < (y2 - y1) ** 2:
    m, a1, a2, b1, b2 = 1, b1, b2, a1, a2
  if min(a1, a2) != a1: a1, b1, a2, b2 = a2, b2, a1, b1
  for k in range(a2 - a1 + 1):
    a, b = a1 + k, int(b1 + (b2 - b1) * k / ((a2 - a1) or 1))
    set_pixel((a, b)[m], (b, a)[m], c)

def draw_ellipse(x, y, rx, ry, c):
  for h in range(-int(ry), int(ry)+1):
    w = sqrt(max(0, rx*rx*(1-h*h/ry/ry)))
    x1, x2 = int(x - w), int(x + w)
    yc = int(y + h)
    set_pixel(x1, yc, c)
    set_pixel(x2, yc, c)
  for w in range(-int(rx), int(rx)+1):
    h = sqrt(max(0, ry*ry*(1-w*w/rx/rx)))
    y1, y2 = int(y - h), int(y + h)
    xc = int(x + w)
    set_pixel(xc, y1, c)
    set_pixel(xc, y2, c)

def fill_ellipse(x, y, rx, ry, c):
  for h in range(-int(ry), int(ry)+1):
    w = sqrt(max(0, rx*rx*(1-h*h/ry/ry)))
    x1, x2 = int(x - w), int(x + w)
    yc = int(y + h)
    draw_line(x1, yc, x2, yc, c)

def draw_circle(x, y, r, c):
  draw_ellipse(x, y, r, r, c)

def fill_circle(x, y, r, c):
  fill_ellipse(x, y, r, r, c)

def horiz_gradient(x, y, w, h, col1, col2):
  for k in range(h):
    draw_line(x, y + k, x + w - 1, y + k, [col1[i] + (col2[i] - col1[i])*k//(h-1) for i in range(3)])

def cmath_exp(a):
  return exp(a.real) * (cos(a.imag) + 1j*sin(a.imag))

def similitude(u, v):
    v = 1j * (u - v)
    return lambda z: v*z + u

def generer_arbre(n):
  lf = (
    similitude(.2j, .2j + .5*cmath_exp(1j * pi / 7)),
    similitude(.22j, .22j + .45j*cmath_exp(1j * pi / 3)),
    similitude(.55j, .55j + .35*cmath_exp(1j * pi / 6)),
    similitude(.57j, .57j + .3j*cmath_exp(1j * pi / 3)),
    similitude(.7j, 1.2j - .01)
  )
  lz = [0j, 0.7j]
  lz1 = lz[:]
  for _ in range(n):
    lz2 = []
    for f in lf:
      lz2.extend([f(z) for z in lz1])
    lz.extend(lz2)
    lz1 = lz2
  return lz

def rotate_color(c):
  return (c[1], c[2], c[0])
   
def trace(d, nb_trees, nb_balls, nb_stars, nb_flakes):

  color_black = (0,) * 3
  color = color_screen and (255,) * 3 or color_black

  # fait tomber la nuit
  colors = (color_black, (0, 0, 127), (0, 127, 255))
  dy = screen_h / (len(colors))
  if color_screen:
    for k in range(len(colors) - 1):
      horiz_gradient(0, round(dy*k), screen_w, round(dy), colors[k], colors[k + 1])
    horiz_gradient(0, screen_h - 1 - round(dy), screen_w, round(dy), (0, 63, 127), color_black)
  dx = (screen_w - 1) / 2 / (nb_trees - 1)

  # allume les etoiles
  for k in range(nb_stars):
    set_pixel(randint(0, screen_w - 1), randint(0, screen_h - 1 - round(dy)), color)

  # plante une foret de sapins
  for p in range(d - nb_trees, d + 1):
    x0 = screen_w // 2 + (p < d and dx * ((d - p) % 2 and d + 1 - p or p - d))
    dy = screen_h / (len(colors)) * (d - p) / nb_trees
    lz = generer_arbre(p)
    for k in range(0, len(lz), 2):
      x1, y1 = transform(lz[k].real, lz[k].imag)
      x2, y2 = transform(lz[k+1].real, lz[k+1].imag)
      x1 += x0
      x2 += x0
      draw_line(x1, y1 - dy, x2, y2 - dy, (0, 160 * (1 - (d - p)//(nb_trees - 1)), 0))

  # decore mon plus beau sapin
  if color_screen:
    lz, r, color_in, color_out = lz[1::max(1, len(lz)//nb_balls)], 2, (0, 255, 255), (0, 0, 255)
    for z in lz:
      x, y = transform(z.real, z.imag)
      x += x0
      fill_circle(x, y, r, color_in)
      draw_circle(x, y, r, color_out)
      color_in, color_out = rotate_color(color_in), rotate_color(color_out)

  # saupoudre de neige
  if color_screen:
    for k in range(nb_flakes):
      fill_circle(randint(0, screen_w - 1), randint(0, screen_h - 1), 1, color)

init_casioplot()
trace(color_screen and 5 or 3, 5, 30, 100, 40)
show_screen()

13236Nous retrouvons maintenant Thomas Fontaine qui s'était déjà illustré au 3ème défi de notre concours de rentrée 2019. ;)

On passe aux choses sérieuses, puisque Thomas nous annonce que Casio a classé son dessin en 2ème position ! :D

Thomas utilise ici le module de tracés relatifs turtle sur Graph 90+E pour nous dessiner un buste de renne.

Un tracé façon 3D fil de fer, décomposant très artistiquement le tout en triangles et quadrilatères telle une sculpture sur bois.

Le script profite avantageusement en taille de la symétrie verticale, n'ayant donc à décrire que le demi-buste qui sera itéré 2 fois.

Le plus remarquable c'est qu'une fois le tracé de chaque demi-buste commencé après un goto() et un couple penup/pendown() initial, à aucun moment la tortue ne se téléporte ou ne lève le stylo, superbe arabesque ! :favorite:

Sur chaque demi-buste, sont tracés dans l'ordre par le code reproduit ci-après:
  1. tête
  2. oreille
  3. cou
  4. poitrail
  5. bois

Toutes nos félicitations Thomas ! :D

Code: Select all
from turtle import *
pensize(2)
for k in [-1,1]:
  penup()
  goto(0,-50)
  pendown()
  hideturtle()

  setheading(90-90*k+30*k)
  fd(19)
  lt(90*k)
  fd(10)

  lt(60*k)
  fd(10)
  fd(-10)
  lt(40*k)
  fd(12)
  fd(-12)
  rt(100*k)

  rt(15*k)
  fd(10)
  rt(15*k)
  fd(10)
  rt(40*k)
  fd(15)
  lt(140*k)
  fd(17)
  fd(-17)
  rt(40*k)
  fd(20)
  fd(-20)
  rt(100*k)
  #oreille
  lt(15*k)
  fd(10)
  lt(60*k)
  fd(7)
  lt(100*k)
  fd(7)
  fd(-7)
  rt(210*k)
  fd(25)
  rt(163*k)
  fd(25)
  fd(-25)
  lt(48*k)
  fd(8)
  rt(65*k)
  fd(20)
  fd(-20)
  lt(50*k)
  fd(20)
  rt(115*k)
  fd(15)
  fd(-15)
  lt(30*k)
  fd(16)
  fd(-16)
  lt(30*k)
  fd(13)

  lt(90*k)
  fd(5)
  rt(110*k)
  fd(10)
  lt(30*k)
  fd(10)
  fd(-10)
  rt(30*k)
  fd(-10)
  lt(90*k)
  fd(20)
  rt(120*k)
  fd(7)
  lt(10*k)
  fd(12)
  fd(-12)
  rt(10*k)
  fd(-7)
  lt(130*k)
  fd(9)

  rt(60*k)
  fd(5)
  lt(45*k)
  fd(50)

  rt(165*k)
  fd(52)
  fd(-52)
  lt(165*k)
  #cou
  lt(140*k)
  fd(35)
  lt(70*k)
  fd(42)
  fd(-42)
  rt(30*k)
  fd(29)
  lt(45*k)
  fd(32)

  rt(40*k)
  fd(5)
  lt(22*k)
  fd(13)
  lt(20*k)
  fd(15)
  lt(40*k)
  fd(11)
  lt(108*k)
  fd(49)
  fd(-49)
# on est en haut de la tete
#bois
  rt(108*k)
  fd(-13)
  #debut des bois
  rt(110*k)
  fd(10)
  lt(90*k)
  fd(6)
  fd(-6)
  rt(130*k)
  fd(30)
  lt(90*k)
  fd(5)
  fd(-5)
  rt(60*k)
  fd(20)
  lt(90*k)
  fd(5)
  fd(-5)
  rt(40*k)
  fd(25)
  lt(165*k)
  fd(25)
  rt(43*k)
  fd(15)
  rt(24*k)
  fd(20)
  fd(-20)
  rt(120*k)
  fd(15)
  lt(90*k)
  fd(5)
  fd(-5)
  rt(45*k)
  fd(25)
  lt(165*k)
  fd(25)
  rt(45*k)
  fd(15)
  rt(45*k)
  fd(5)
  rt(90*k)
  fd(10)
  lt(90*k)
  fd(4)
  fd(-4)
  rt(120*k)
  fd(15)
  lt(165*k)
  fd(15)
  lt(30*k)
  fd(15)
  rt(75*k)
  fd(15)
  fd(-5)
  rt(70*k)
  fd(12)
  lt(160*k)
  fd(12)
  rt(30*k)
  fd(10)

13237Voici maintenant notre cher Afyu, qui utilise également le module turtle sur Graph 90+E.

Afyu nous apprend que c'est sa participation qui a été retenue par Casio en tant que meilleur dessin de Noël ! :bj:

Afyu nous dessine ici toute une scène de Noël. Nous y retrouvons plusieurs éléments des participations précédentes :
  • le sapin
  • ses boules
  • une étoile
  • le renne, ici en entier ;)
Mais c'est surtout la scène de Noël la plus complète. Afyu profite en effet ici de l'écran large de la Casio Graph 90+E pour nous rajouter en prime un traineau recevant une pluie de cadeaux. :D

Sont tracés dans l'ordre par le code ci-après :
  1. le renne avec :
    1. sa patte arrière droite
    2. son dos
    3. ses oreilles
    4. ses bois
    5. sa tête
    6. son torse
    7. sa patte avant droite
    8. sa patte avant gauche
    9. son abdomen
    10. sa patte arrière gauche
  2. le traineau
  3. le harnais
  4. le sapin avec :
    1. son feuillage
    2. ses guirlandes
    3. ses boules
    4. son étoile
  5. les 4 paquets cadeaux avec pour chacun :
    1. la boîte
    2. le ruban

Et ce qu'il y a de remarquable ici c'est que l'on ne repère quasiment pas d'élément géométrique remarquable, témoin du soin et de la précision apportés au tracé ! :o

Bravo Afyu, nous sommes très fiers de toi ! :bj:

Code: Select all
from turtle import *
hideturtle()
penup()
goto(-110,-50)
pendown()
#4  me patte
rt(40)
penup()
for i in range(30):
  fd(1/4)
  lt(1/2)
pendown()
for i in range(30):
  fd(1)
  rt(3-i/15)
for j in range(4):
  for i in range(10):
    fd(1/2)
    lt(3)
  lt(60)
lt(120)
for i in range(10):
  fd(1/2)
  rt(3)
lt(110)
for i in range(20):
  fd(1)
  rt(1.5)
#fd(30)
lt(50)
for i in range(25):
  fd(0.6)
  rt(2)
for i in range(15):
  fd(1)
  lt(3)
for i in range(30):
  rt(12)
  fd(1/2)
for i in range(15):
  fd(1)
  lt(4)
for i in range(30):
  fd(1)
  rt(i//10)
lt(30)
for i in range(40):
  fd(1/2)
  rt(i//10)
setheading(0)
penup()
fd(-15/2)
pendown()#les oreilles
for i in range(40):
  fd(((400-10*i)//160)/2)
  lt(4)
lt(290)
#for i in range(42):
  #fd((10*i)//160)
  #lt(4.2)
#penup()
#for i in range(42):
  #fd(-(10*(28-i))//160)
  #lt(-4.2)
#pendown()
for i in range(40):
  fd(((10*i)//160)/2)
  lt(4)
penup()
rt(90)
#fd(5)
lt(90)
fd(-5/2)
pendown()
#les bois
#penup()
rt(110)
fd(1)
#pendown()
rt(90)
for i in range(20):
  fd(1)
  rt(1)
lt(20)
for j in range(3):
  rt(90)
  #for i in range(20):
    #fd(3)
    #lt(2+20-2*i)
  for i in range(10):
    fd(3/2)
    lt(2+10-i)
  for i in range(4):
    fd(1/2)
    lt(36)
  lt(10)
  for i in range(9):
    fd(1)
    rt(1+2*i)
lt(40)   
for i in range(80):
  fd(1/2)
  rt(2)
for i in range(10):
  fd(1/2)
  lt(18)
for i in range(30):
  fd(1/2)
  lt(1)
for i in range(20):
  fd(1/2)
  rt(3)
#fin des bois
penup()
setheading(-90)
fd(15/2)
lt(90)
fd(1)
pendown()
setheading(240)
pensize(2)
for j in range(2):
  for i in range(40):
    fd(1/12)
    rt(3)
  rt(60)
pensize(1)
setheading(90)
penup()
fd(15/2)
lt(90)
fd(1)
lt(75)

pendown()
rt(60)
for i in range(20):
  fd(1/2)
  lt(2)
lt(40)
for i in range(30):
  fd(1/2)
  rt((30-i)//7)
lt(70)
for j in range(4):
  for i in range(10):
    fd(1/2)
    lt(5)
  lt(40)
rt(0)
#for j in [1,-1]:
  #for i in range(30):
    #fd(j)
    #lt(4*j)
fd(5/2)
rt(50)
fd(1)
lt(70)
for i in range(25):
  fd(1)
  lt((50-5*i)/3.7)
lt(70)
for j in range(2):
  for i in range(10):
    fd(1)
    rt(2)
  lt(40)
rt(50)
fd(7/2)
fd(-7/2)
rt(40)
#1  re patte
for j in range(2):
  for i in range(30):
    fd(1/2)
    rt(1)
  lt(70)
lt(20)
fd(5)
rt(200)
for j in range(4):
  for i in range(10):
    fd(1/2)
    lt(3)
  lt(60)
lt(100)
for j in range(2):
  for i in range(30):
    fd(-1/2)
    rt(-1)
  rt(70)
  penup()
#2  me patte
#lt(90)
fd(15/2)
#pendown()
lt(100)
pendown()
for j in range(2):
  for i in range(30):
    fd(1/2)
    rt(1)
  lt(50)
lt(30)
fd(5)
rt(190)
for j in range(4):
  for i in range(10):
    fd(1/2)
    lt(3)
  lt(60)
lt(100)
for j in range(2):
  for i in range(30):
    fd(-1/2)
    rt(-1)
  rt(60)
#bas du corps
rt(90)
fd(5/2)
fd(-5/2)
rt(120)
for i in range(50):
  fd(1/2)
  lt(1/4)
lt(90)
penup()
fd(15/2)
pendown()
rt(190)
#3  me patte
for i in range(40):
  fd(1/2)
  lt(2-i/20)
rt(0)
for i in range(30):
  fd(1/2)
  rt((100-3*i)/30)
lt(0)
for j in range(4):
  for i in range(10):
    fd(1/2)
    lt(3)
  lt(60)
lt(120)
for i in range(10):
  fd(1/2)
  rt(3)
lt(90)
for i in range(30):
  fd(1/2)
  lt(1)
lt(10)
for i in range(30):
  fd(1/2)
  rt(1+i//15)
rt(20)
for i in range(30):
  fd(1/2)
  lt(1+i//15)



from turtle import *
hideturtle()
penup()
setheading(0)
pencolor([120/255,60/255,0])
pensize(3)
goto(-80,-40)
pendown()
rt(35)
for i in range(45):
  fd(1/2)
  rt(1)
rt(90)
#bois
pensize(3)
pencolor([120/255,60/255,0])
for i in range(30):
  fd(1)
  lt(6)
rt(10)
fd(5)
lt(90)

for i in range(4):
  fd(10)
  rt(90)
  fd(3.5)
  rt(90)
  fd(10)
  lt(90)
  fd(20)
  lt(90)

rt(90)
for i in range(10):
  fd(0.6)
  rt(18)

fd(47*2+5)

for i in range(28):
  fd(1.45)
  rt(6)

rt(84)
for i in range(20):
  fd(1/2)
  rt(1)
fd(7/2)

setheading(0)
fd(90)

#arri  re
lt(90)
for i in range(30):
  fd(3/2)
  rt(i//10)

setheading(0)
for i in range(17):
  fd(1/2)
  lt(10)
fd(3/2)
penup()
fd(-3/2)
for i in range(17):
  fd(-1/2)
  lt(-10)
pendown()
setheading(160)
for i in range(38):
  fd(3)
  lt((15-i)/2)
for i in range(40):
  fd(1/2)
  lt((15-i))
 
penup()
setheading(0)
fd(105)
lt(90)
fd(20)
pendown()

setheading(160)
for i in range(38):
  fd(3)
  lt((15-i)/2)
for i in range(42):
  fd(1/2)
  lt((15-i))

lt(70)
fd(15/2)

pensize(2)
setheading(203)
for i in range(34):
  fd(3)
  rt(2-i/40)



from turtle import *
setheading(-30)
penup()
goto(110,-80)
hideturtle()
#pendown()
pencolor([0,205/255,0])
pensize(2)
for k in [-1,1]:
  penup()
  goto(110,-80)
  setheading(90)
  fd(15)
  setheading(90-120*k)
  fd(16)
  pendown()
  for j in range(4):
    for i in range(30):
      fd(1-j/5)
      lt(k*(1+i//20))
    rt(50*k)
    for i in range(10):
      fd(-1+j/5)
      lt(k*(-1-i//20))

    lt(50*k)
    for i in range(50):
      fd(1-j/5)
      lt(k*(i/30))
    rt(40*k)
    for i in range(40):
      fd(-1+j/5)
      lt(k*(-i//20))

    lt(70*k)
    for i in range(10):
      fd(1-j/5)
      lt(k*(1+i//20))
    rt(30*k)
    for i in range(40):
      fd(-1+j/5)
      lt(k*(-1-i//30))
    setheading(90-90*k-30*k+30*j*k)
  setheading(90-50*k)
  for i in range(30):
    fd(1/2)
    lt(k*(1+i//20))
  rt(40*k)
  for i in range(20):
    fd(-1/3)
    lt(k*(-1-i//20))

  lt(50*k)
  for i in range(30):
    fd(1/2)
    lt(k*(i/10))
  rt(60*k)
  for i in range(30):
    fd(-1/3)
    lt(k*(i/20))

  lt(20*k)
  for i in range(30):
    fd(1/2)
    lt(k*(1+i//20))
#guirlandes
penup()
goto(120,50)
pendown()
pencolor([1,0,0])

setheading(-140)
for i in range(6):
  pensize(5)
  fd(3)
  pensize(2)
  fd(3)
  rt(5)

setheading(-50)
for i in range(10):
  pensize(5)
  fd(3)
  pensize(2)
  fd(3)
  lt(6)
 
setheading(-150)
for i in range(12):
  pensize(5)
  fd(3)
  pensize(2)
  fd(3)
  rt(4)
 
setheading(-60)
for i in range(13):
  pensize(5)
  fd(3)
  pensize(2)
  fd(3)
  lt(6)
 
setheading(-120)
for i in range(15):
  pensize(5)
  fd(3)
  pensize(2)
  fd(3)
  rt(6)
 
setheading(-50)
for i in range(13):
  pensize(5)
  fd(3)
  pensize(2)
  fd(3)
  lt(6)

#boules
from random import randint
for coord in [(17,32),(-17,24),(-60,-10),(15,0),(-30,-40),(40,-50)]:
  penup()
  goto(coord[0]+110,coord[1]-10)
  pensize(20)
  pencolor([randint(1,10)/10,randint(1,10)/10,randint(1,10)/10])
  pendown()
  fd(1)

#etoile
penup()
goto(100,80)
pendown()
pencolor([220/255,220/255,40/255])
pensize(5)
setheading(0)
for i in range(5):
  fd(20)
  rt(72*2)




#paquets
from random import randint
for coord in [(0,20),(-30,-10),(-70,10),(-30,50)]:
  penup()
  goto(coord[0],coord[1])
  pendown()
  pensize(7/2)
  pencolor([randint(1,10)/10,randint(1,10)/10,randint(1,10)/10])
  setheading(randint(1,60)-30)
  for i in range(4):
    fd(20)
    lt(90)
  fd(20)
  lt(45)
  fd(15/2)
  lt(45)
  fd(20)
  lt(135)
  fd(15/2)
  fd(-15/2)
  rt(45)
  fd(20)
  lt(45)
  fd(15/2)
 
 
  penup()
  lt(45)
  pencolor([randint(1,10)/10,randint(1,10)/10,randint(1,10)/10])
  pensize(7/2)
  fd(10)
  #pendown()
  lt(90)
  fd(20)
  lt(45)
  fd(15/2)
 
  fd(-7/2)
  pendown()
  pensize(5/2)
  lt(45)
  fd(-10)
  fd(20)
  lt(90)
  fd(20)
  fd(-20)
  rt(90)
  fd(-10)
  rt(45)
  pensize(7/2)
  penup()
  fd(-4)
  rt(45)
  fd(-10)
  pendown()
  lt(90)
  fd(-10)
  fd(20)
  #ruban
  rt(45)
  fd(7/2)
  rt(15)
  for j in range(2):
    for i in range(30):
      fd(1/2)
      lt(2)
    lt(120)
    for i in range(30):
      fd(1/2)
      lt(2)
    rt(180)

Un grand merci également à Casio pour ce concours absolument remarquable invitant les participants à véritablement produire quelque chose sur leur calculatrice ou son émulateur, une grande première il nous semble, et réussie si on se fie aux dessins présentés. :D

Un concours de plus à la dotation fort appréciée. On aime la présence de plusieurs gros lots, la possibilité pour les gagnants de personnaliser en partie leur gros lot (choix de la calculatrice), l'absence de perdant, et justement en lot de participation les goodies exclusifs ! :bj:

Merci Casio d'avoir égayé notre mois de décembre avec un peu de magie de Noël en cette période difficile. :favorite:

Du grand art, reproduire un tel événement en ouvrant la participation aux élèves pourra être une excellente idée bien sûr en des temps plus propices. ;)

Téléchargements :

-
Search
-
Social TI-Planet
-
Featured topics
Grand Concours 2024-2025 - Programmation Python
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"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.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
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.
651 utilisateurs:
>627 invités
>15 membres
>9 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)