π
<-
Chat plein-écran
[^]

News 2024
Avril (12)
Mars (7)
Janvier (20)

News 2023
Octobre (19)
Août (14)
Juillet (13)
Juin (21)
Mai (29)
Avril (24)
Mars (24)
Janvier (24)

News 2022
Octobre (23)
Août (14)
Juillet (15)
Juin (17)
Mai (31)
Avril (27)
Mars (28)
Janvier (34)

News 2021
Octobre (24)
Août (37)
Juillet (50)
Juin (32)
Mai (48)
Avril (61)
Mars (35)
Janvier (34)

News 2020
Octobre (17)
Août (43)
Juillet (43)
Juin (45)
Mai (60)
Avril (78)
Mars (36)
Janvier (39)

News 2019
Octobre (13)
Août (18)
Juillet (23)
Juin (28)
Mai (31)
Avril (26)
Mars (38)
Janvier (37)

News 2018
Octobre (13)
Août (32)
Juillet (23)
Juin (64)
Mai (63)
Avril (45)
Mars (43)
Janvier (45)

News 2017
Octobre (26)
Août (39)
Juillet (52)
Juin (88)
Mai (51)
Avril (43)
Mars (37)
Janvier (33)

News 2016
Octobre (25)
Août (42)
Juillet (34)
Juin (109)
Mai (55)
Avril (34)
Mars (37)
Janvier (24)

News 2015
Octobre (22)
Août (56)
Juillet (22)
Juin (94)
Mai (56)
Avril (32)
Mars (40)
Janvier (21)

News 2014
Octobre (26)
Août (18)
Juillet (23)
Juin (101)
Mai (57)
Avril (59)
Mars (54)
Janvier (31)

News 2013
Octobre (67)
Août (50)
Juillet (43)
Juin (193)
Mai (93)
Avril (102)
Mars (45)
Janvier (50)

News 2012
Octobre (64)
Août (63)
Juillet (53)
Juin (132)
Mai (88)
Avril (73)
Mars (57)
Janvier (58)

News 2011
Octobre (56)
Août (31)
Juillet (27)
Juin (71)
Mai (61)
Avril (32)
Mars (36)
Janvier (24)

News 2010
Octobre (11)
Août (8)
Juillet (14)
Juin (10)
Mai (3)
Avril (3)
Mars (1)

News 2009
Août (3)
Juin (2)
Mai (1)
Avril (2)
Mars (1)

Mini-test TI-Rover - exo Scratch DNB 2017 Amérique du Sud

Nouveau messagede critor » 09 Déc 2017, 13:04

Pour Noël, nous voici enfin équipés du robot TI-Innovator Rover, pilotable à partir d'une TI-83 Premium CE, TI-84 Plus CE ou TI-Nspire CX munie d'une interface TI-Innovator Hub.

Avant d'apprendre à mieux le connaître, tentons de voir ce que nous sommes capables d'en tirer directement "out of the box", pour le tracer de figures.

9042Munissons-nous à cette fin de quelques éléments non inclus :
  • un tableau blanc sous forme de rouleau 2x1m²
  • un feutre pour tableau blanc, de moins de 12,5mm de diamètre
L'avantage est que nous disposons ainsi d'une part d'un tableau amovible transportable disposable à plat, pouvant être aisément changé de salle ou emporté pour des événements, et d'autre part effaçable et donc réutilisable à l'infini.
Un possible inconvénient est que la surface est glissante, et risque de faire patiner le robot.

Prenant comme exemple l'exercice de programmation qui vient de tomber à l'épreuve de Mathématiques du DNB 2017 en Amérique du Sud.

C'est parti pour l'adaptation TI-83 Premium CE, puisque malheureusement nous n'y disposons pas (encore ? ;) ) du langage Scratch :

PROGRAM1PROGRAM2CARRE
Code: Tout sélectionner
0.075→K
10→L
Send("CONNECT RV
For(I,1,4
prgmCARRE
L+20→L
End
Code: Tout sélectionner
0.1→K
10→L
Send("CONNECT RV
For(I,1,4
prgmCARRE
L+2→L
End
Code: Tout sélectionner
For(J,1,4
Send("RV FORWARD eval(KL
Send("RV LEFT 90
End


9037
De premiers résultats plus que passables, qu'il serait à ce jour miraculeux d'obtenir avec d'autres systèmes comme le TI-Robot E3. Le TI-Rover nous trace en apparence de belles lignes droites. Toutefois il se décale progressivement de la trajectoire prévue lors des 16 rotations, ce qui voudrait dire qu'il ne tourne pas de 90 degrés à gauche comme demandé, mais de légèrement moins. Cela ne semble pas être un problème de précision de ses capteurs, sinon le décalage devrait pouvoir avoir lieu dans les deux sens et donc de temps en temps se compenser. Peut-être donc plutôt ici un problème de calibrage. Les 16 erreurs dans le même sens s'additionnent donc progressivement, ne faisant qu'empirer l'écart au départ négligeable.


Mais quel dommage que les modules externes soient interdits sur les calculatrices au DNB ! :P
Lien vers le sujet sur le forum: Mini-test TI-Rover - exo Scratch DNB 2017 Amérique du Sud (Commentaires: 4)

Performances, la NumWorks détrône la HP Prime ! :o

Nouveau messagede Admin » 09 Déc 2017, 19:07

Comme rappelé récemment dans l'épisode 19 de notre classement QCC de rentrée 2017, la HP Prime était depuis la rentrée 2013 la calculatrice graphique la plus rapide. Mais lors de la mise à jour de cet épisode suite à la sortie de la calculatrice NumWorks, nous remarquions que la NumWorks semblait la dépasser en performances (testées sur l'évaluation de programmes de calcul numérique).

Avec un processeur cadencé quatre fois moins vite, ARM Cortex-M4 à 100MHz pour la NumWorks contre ARM9 (ARMv5) à 400MHz pour la HP Prime (à moins que cette dernière information répandue sur Internet ne soit que la fréquence nominale et non la fréquence réelle ?) c'était assez surprenant. Nous ne pouvions exclure une erreur de mesure, les écarts ne faisant que quelques centièmes de seconde. En effet notre protocole de test utilisait le même programme pour tous les modèles, programme que l'on ne pouvait pas corser davantage à cause de limitations sur les modèles les plus faibles, et qui donc sur les meilleurs modèles terminait en moins d'une seconde, faisant ainsi perdre aux mesures en précision.

Aujourd'hui que le langage de programmation Python de la NumWorks n'est plus en version beta, et que la HP Prime gère aussi une forme de Python, tentons d'éclaircir un petit peu le mystère entourant les différences de performances entre ces deux modèles, et de les départager équitablement.

Nous allons cette fois-ci tester les performances avec un programme graphique. Reprenons le programme Mandelbrot inclus en exemple sur la NumWorks, et adaptons-le à l'identique pour la HP Prime. Nous ne dessinerons donc dans les deux cas que 320x222 pixels au lieu 320x240, puisque les écritures sur la barre de titre sont bloquées sur la NumWorks ce qui pourrait fausser la comparaison.

programme NumWorks en Python
(versions 1.2.0+)
programme HP Prime en simili-Python
(versions 12951+)
Code: Tout sélectionner
import kandinsky
def mandelbrot(W,H,N) :
for x in range(W):
  for y in range(H):
   z=complex(0,0)
   c=complex(2.7*x/(W-1)-2.1,-(1.87*y/(H-1)-.935))
   j=0
   while j<N and abs(z)<2:
    j=j+1
    z=z*z+c
   t=255*j/N
   col=kandinsky.color(int(t),int(.75*t),int(.25*t))
   kandinsky.set_pixel(x,y,col)
Code: Tout sélectionner
#cas
def fractal_python(W,H,N) :
local x,y,z,c,j,t,col
for x in range(W):
  for y in range(H):
   z=0
   c=2.7*x/(W-1)-2.1-i*(1.87*y/(H-1)-.935)
   j=0
   while j<N and abs(z)<2:
    j=j+1
    z=z*z+c
   t=255*j/N
   col=RGB(IP(t),IP(.75*t),IP(.25*t))
   PIXON_P(x,y,col)
FREEZE
WAIT(0)
#end


La NumWorks met seulement 1min26s à effectuer le tracer pendant que la HP Prime se traîne péniblement pendant 4min22s. On confirme donc, hélas, des performances très décevantes pour la HP Prime, le même programme mettant 3 fois plus de temps à allumer le même nombre de pixels. :'(

Notons que dans les deux cas, on peut voir à l’œil nu les pixels s'allumer progressivement de haut en bas sur chaque colonne, ce qui suggère bien un fonctionnement similaire des instructions graphiques, légitimant ainsi la comparaison.

Bien que les TI-Nspire disposent d'un Python non officiel, nous ne pouvons y exécuter exactement le même programme et c'est pour cela qu'elles sont absentes de ce test. En effet, les fonctions graphiques de l'évaluateur Python en question fonctionnent différemment et ne permettent pas d'écrire directement sur l'écran, obligeant à définir et écrire des zones hors écran (offscreen) qui seront remplies puis affichées d'un seul coup. Un très mauvais choix d'ailleurs dans le contexte scolaire de lycéens débutants d'imposer ce fonctionnement, alors qu'au contraire il faudrait leur laisser expérimenter l'écriture directe et en saisir les limites pour qu'il puissent alors comprendre l'intérêt de passer par une zone 'offscreen'. Pas possible non plus de choisir un autre langage interprété comme le TI-Basic, puisqu'il ne dispose pas de fonctions de sorties graphiques sur ces modèles. Le Lua n'est pas non plus une solution puisqu'il ne gère pas les nombres complexes d'une part, obligeant donc à passer par divers astuces risquant de fausser la comparaison, et d'autre part 'bufferise' les sorties écran, les temporisant donc pour les rendre effectives de façon groupée en fin d'exécution de la fonction de rafraîchissement on.paint(gc).



Pourquoi la HP Prime est-elle si lente ? Deux hypothèses :
  1. soit on incrimine le CAS, le langage simili-Python de la HP Prime n'étant disponible que dans le contexte CAS, et nous avions vu dans l'épisode en question que les calculs étaient nettement plus lents dans ce cadre
  2. soit on incrimine son évaluateur/traducteur Python

Pour valider ou infirmer cette dernière hypothèse, traduisons le même programme dans le langage interprété HPPPL CAS originel de la HP Prime :
Code: Tout sélectionner
#cas
fractal_cas(w,h,n)
BEGIN
local x,y,z,c,j,t,col
FOR x FROM 0 TO w-1 DO
  FOR y FROM 0 TO h-1 DO
   z:=0
   c:=2.7*x/(w-1)-2.1-i*(1.87*y/(h-1)-.935)
   j:=0
   WHILE j<N AND abs(z)<2 DO
    j:=j+1
    z:=z*z+c
   END;
   t:=255*j/N
   col=RGB(IP(t),IP(.75*t),IP(.25*t))
   PIXON_P(x,y,col)
  END;
END;
FREEZE
WAIT(0)
#end

[

Et bien c'est pire, la HP Prime passant de 4min22s à 4mins35s. Ce qui implique que l'écriture à la Python ne complexifie pas la chose, et le temps additionnel étant probablement dû à l'évaluation des lignes supplémentaires de fin de bloc qui sont omises en Python.



Ce serait donc la faute du CAS ? Voyons si nous pouvons valider cette hypothèse en réécrivant le même programme en langage interprété HPPPL non-CAS :
Code: Tout sélectionner
EXPORT fractal(w,h,n)
BEGIN
local x,y,z,c,j,t,col
FOR x FROM 0 TO w-1 DO
  FOR y FROM 0 TO h-1 DO
   z:=0
   c:=2.7*x/(w-1)-2.1-i*(1.87*y/(h-1)-.935)
   j:=0
   WHILE j<N AND abs(z)<2 DO
    j:=j+1
    z:=z*z+c
   END;
   t:=255*j/N
   col=RGB(IP(t),IP(.75*t),IP(.25*t))
   PIXON_P(x,y,col)
  END;
END;
FREEZE
WAIT(0)
#end


Bien, la HP Prime tombe cette fois-ci à seulement 2min24s, doublant presque ses performances. Le contexte CAS limite bien les performances même quand on ne fait pas appel à ses spécificités, et il est ainsi dommage que le langage simili-Python ne soit donc disponible que dans ce cadre, surtout quand il n'y a aucune intention de faire du calcul exact ou littéral.

Toutefois, 2min24s c'est quand même nettement plus lent que les 1min26s de la NumWorks. D'autres facteurs interviennent donc visiblement, et l'on peut valider la constatation de l'épisode 19.

Cela ne veut pas forcément dire que son processeur est plus puissant, mais en tous cas en terme de performances effectives et ce depuis la rentrée 2017, la meilleure calculatrice graphique est donc la NumWorks. :bj:
Lien vers le sujet sur le forum: Performances, la NumWorks détrône la HP Prime ! :o (Commentaires: 66)

Résultats catégorie NumWorks concours Galactik rentrée 2017

Nouveau messagede critor » 10 Déc 2017, 22:15

Image

Après la publication du classement de la catégorie HP dans un article précédent, voici enfin aujourd'hui le classement catégorie NumWorks de notre concours de rentrée 2017 Galactik! :bj:

Samuel V. arrive 8ème avec une disposition périphérique évaluée à 7 347 261.


Manu R. quant à lui arrive à une disposition valant 16 210 747, se classant ainsi 7ème.


Mention honorable pour MMBC_Chris qui passe à une disposition quadripolaire lui obtenant un score de 46 412 928 après 2 participations. Toutefois il a par la suite changé pour la catégorie TI.


Iamissam arrive quant à lui à faire mieux après 3 participations avec un unique amas d'étoiles central, terminant avec 55 490 249 à la 6ème place.


Mention honorable avec un amas d'étoiles un peu plus excentré pour Cyril S. mais avec un peu plus d'ordre avec des dispositions remarquables en triangle et en carré, qui arrive ainsi à faire encore mieux avec 77 653 887. Il a par la suite opté pour la catégorie HP.

@Cyril, quel est ton secret ?
Cyril S. a écrit:Quand j’ai découvert le concours, pour des raisons de facilités, j’ai commencé à chercher dans la catégorie Numworks, où j’ai posté un premier score trouvé empiriquement. Bien qu’appréciant les calculatrices, je suis totalement novice dans la programmation sur calculatrice ou simplement le transfert de fichiers.
Puis j’ai chargé le programme pour ma Casio CP400 (que j’ai depuis deux mois), même si les lots ne m’intéressait pas vraiment. Après avoir essayé de déplacer fastidieusement les étoiles et pensé que soit j’avais mal fait l’importation, soit que le programme était bogué, j’ai chargé l’émulateur HP Prime, et j’ai vraiment commencé à être méthodique.
J’ai commencé par placer toutes les planètes en haut de l’écran, j’ai descendu la première, puis les autres une à une, afin d’établir un tableau répertoriant les différentes interactions avec des --, -, +, ++, tableau qui correspondra à la matrice G. Cela m’a permis de voir la distance 20 revenant pour les interactions positives.
J’ai ensuite copié le programme dans Notepad++, afin de l’indenter, et l’analyser en détail. J’ai découvert le fonctionnement du ranseed, puis compris comment le score était calculé. J’ai créé une liste avec les valeurs du ranseed(42) que j’ai exportée vers Excel, elle m’a permis de créer la matrice G.
Puisqu’il fallait placer les planètes avec une distance de 20, sur papier, j’ai disposé les planètes sur un maillage en formant des triangles équilatéraux en fonction des valeurs de G, en trouvant les coordonnées avec un peu de trigonométrie. Et j’ai obtenu un score aux alentours de 121 millions.
Pour essayer d’améliorer, j’ai repris Excel et créé une succession de matrices afin d’y calculer directement le score et d’utiliser les algorithmes du solveur. Que ce soit clair, il s’en sort peut être bien pour une fonction du second degré, mais là, il y a beaucoup trop d’extrema locaux, et globalement, il n’a presque jamais été en mesure d’améliorer la position initiale donnée, parfois quelques centièmes grappillés quand même.
J’ai fini par trouver à la main encore une réponse un peu meilleure avec 124,4 millions que je n’ai pas postée. Je comptais la garder pour revenir dans la catégorie HP, après avoir posté des résultats dans d’autres catégories, mais des vacances m’ont empêché de poursuivre mes recherches.
Je regrette quand même de ne pas avoir posté le score de 9,4 millions que j’avais trouvé sur CP400, puisqu’aucun score n’a été envoyé avec cette version du programme.

Ce concours était très intéressant, j’ai découvert la HP Prime via son émulateur, et je l’ai vraiment appréciée, la programmation y est compréhensible assez vite.
galactik HP Casio.xlsx
(43.6 Kio) Téléchargé 330 fois


En 5ème position Tom H. scinde la constellation en 2 pôles mais ordonne intégralement l'un d'entre eux selon un quadrillage triangulaire, arrivant ainsi à atteindre un score de 97 436 116, 3 participations.


En reprenant cet ordonnancement triangulaire mais avec un unique amas d'étoiles, Jujuwalrus arrive à monter jusqu'à 105 120 352 et donc à se classer 4ème après avoir persévéré pendant 7 participations.


Mention honorable avec une disposition partiellement triangulaire mais centrale pour Lephenixnoir, qui arrive ainsi à faire monter les enchères à 107 711 143. Il a toutefois la malchance d'être administrateur de Planète Casio et ne pouvait donc pas être classé.

@Lephenixnoir, comment t'y étais-tu pris pour disposer tes étoiles ?
Lephenixnoir a écrit:J'ai implémenté un pur algorithme génétique. Ce type d'algo consiste à prendre un population, ici un ensemble de solutions avec leurs scores. Il applique ensuite un cycle bien précis :

1. Évaluation : On calcule le score de chaque configuration
2. Sélection : On ne garde que les meilleures
3. Croisement : On croise les meilleures entre elles pour recréer de la population
4. Altération : On modifie aléatoirement quelques positions (pour éviter de stagner)
5. On recommence à l'étape 1.

Les deux premières étapes sont simples à s'imaginer. Pour la troisième, j'avais deux manières de croiser deux configurations. Dans chacune d'elles, je considérais pour chaque étoile, sa position dans la première configuration, puis dans la deuxième. La première méthode choisissait, pour placer cette étoile dans la configuration fille, une position au hasard sur le segment. La seconde aussi, mais elle se mettait au même endroit (au même rapport de distance, ie. le même barycentre) pour toutes les étoiles, ce qui donnait une sorte de rotation qui préservait bien le score.

Pour l'altération, je faisais vibrer toutes les étoiles sur une amplitude de λ autour de leur position. Tant que le score maximal de la population grandissait, λ restait fixe, mais s'il stagnait, λ devenait plus petit pour permettre de gagner de la précision. Si ça ne suffisant pas, λ devenait très grand pour tenter de débloquer la situation.

Je faisais tourner ça sur 65'000 à 4 millions de générations selon les cas (plus le score semblait prometteur et plus je faisais durer la simulation), en partant de configurations entièrement aléatoires. En le faisant tourner quelques minutes, je sortais plusieurs configurations à plus de 9 millions, mon meilleur score étant 9846814.67 sur Casio et 107711137.32 sur Numworks.

Comme ça ne suffisait pas pour rattraper les premiers, j'ai imaginé un autre système (que je n'ai malheureusement pas eu le temps d'implémenter). Ça consistait à traduire les relations entre les étoiles en forces et à appliquer de la mécanique sur le système. En gros, en combinant la somme de toutes les forces, le système aurait convergé naturellement vers un équilibre local. En plus de ça, j'aurais fait vibrer doucement toutes les planètes avec l'algorithme génétique pour éviter de stagner.
https://www.planet-casio.com/Fr/forums/lecture_sujet.php?id=14990#150945


Avec quelque chose de similaire, Thomas M. arrive à monter jusqu'à 110 530 628 et à se classer 2nd, si si, après avoir persévéré pendant 5 participations.


Avec une disposition centrale intégralement ordonnée selon un quadrillage triangulaire, Oakwood arrivait initialement à faire mieux, 111 004 247.

Toutefois, il a volontairement envoyé par la suite une configuration moins optimale, expliquant tout à son honneur qu'il pouvait se payer la calculatrice NumWorks et préférait laisser leur chance à d'autres candidats, terminant ainsi 3ème avec 110 381 793 après un total de 7 participations.


Toutes nos félicitations à proghy_v2. Avec une organisation triangulaire centrale, il culmine à 113 492 545 et décroche ainsi la 1ère place après 3 participations.

@proghy_v2, explique-nous vite comment tu as fait ! :)
proghy_v2 a écrit:Déjà si vous me connaissez pas, c'est normal. Je m’intéressais aux calculatrices quand j'étais au lycée, j'ai posté quelques programmes z80 sur le site avant TI Planet, mais dès que j'ai eu un pc portable mon intérêt s'est détourné des calculatrices, donc je suis pas resté longtemps sur TI Planet.

Et puis la semaine dernière s'était Halloween, et je me disais que plus beaucoup de site changeaient de look pour l'occasion, alors je suis venu checker pour voir s'il y avait toujours des beaux artworks Halloween ici. Et je suis tombé sur la news qui annonçait la fin du concours, ça m'a trigger.

J'ai réinstallé wabbitemu pour tester le programme TI mais j'ai pas réussi, il me disait qu'il y avait pas assez de mémoire sur la calculatrice, wtf. Pas envie de me casser la tête, je suis parti sur la version Numworks en js. Comme je suis un quiche en js j'ai utilisé js2py pour convertir tout ça en python. J'ai juste réécris la fonction recalc() à la main pour qu'elle soit performante. Après j'ai testé a peu près tous les algos de la librairie scipy.optimize. Les algo de minimisation locale arrivaient à rien, la fonction est pas assez régulière / linéaire / différentiable que sais-je. Du coup je suis parti sur l'algo « differential evolution ». J'ai essayé pas mal de combinaisons de paramètres pour l'algo et rapidement j'arrivais dans les 106 millions, mais difficile de faire mieux.

Je me suis dit que j'avais plus le choix, qu'il fallait réfléchir. J'ai regardé le code et je me suis mis en tête d'exprimer la fonction avec la matrice de distance en entrée plutôt qu'avec des coordonnées de points. J'avais l'intuition que la fonction serait bien plus régulière et que les algo à descente de gradient pourraient converger. Et ils ont très bien convergé en effet : plus de 150 000 000 millions ! Alors j'ai essayé de placer des points dans le plan qui correspondaient à ces distance, mais c'était pas possible évidemment. J'ai alors ajouté aux problème de minimisation les contraintes pour que les distances vérifient les 3 inégalités triangulaires dans tous les triangles. Encore une fois ça converge bien, plus de 130 millions, je crois avoir touché au but. Mais non, la solution est toujours pas constructible en termes de points.

Je me suis dit qu'il manquaient encore des contraintes au niveau des quadrilatères. J'ai exprimé la longueur de la 6ème longueur en fonction des 5 autres. On se retrouve avec 2 cas :

cas convexe :
f^2=a^2+b^2-2*a*b*cos(arcos((a^2+e^2-c^2)/(2*a*e))-arcos((e^2+b^2-d^2)/(2*e*b)))

cas concave :
f^2=a^2+b^2-2*a*b*cos(arcos((a^2+e^2-c^2)/(2*a*e))+arcos((e^2+b^2-d^2)/(2*e*b)))

Je fais tourner mon algo avec ces contraintes... « math domain error » :/

Donc je prolonge ma fonction arcos pour qu'elle soit continue, pseudo-périodique parce que... je voyais pas quoi faire d'autre qui ait du sens.

Et l'algo a convergé vers un truc pourri, genre 80 millions. Je sas pas si c'est mes contraintes qui étaient trop fortes, ou la fonction pas assez comme il faut. J'ai ragequit, je suis retourné sur l'algo génétique, et au bout d'un moment j'ai trouvé des bon paramètres, ça me donnait dans les 113 millions, suffisant pour être premier.

Après j'ai essayé une autre lib de minimisation qui s'appelle pygmo. L'algo self adaptative differetial evolution arrivait à trouver dans les 110 millions sans se casser la tête à choisir les paramètres. L'algo CMA-ES a réussir à atteindre les 116 millions (fallait juste diviser la sortie de la fonction par un million sinon il stagnait dans les 108 millions). J'ai pas posté ce dernier résultat parce que c'était plus de minuit par contre ^^

Au final j'ai appris pas mal de trucs sur python et la algo de minimisation, c'était cool.
https://tiplanet.org/forum/viewtopic.php?f=49&t=20678&p=223473#p223473


Very honourable distinction for jacobly. With a similar but maybe more central constellation, he achieved 117 905 625. But he then moved to the TI category.

@jacobly, how did you manage to achieve such a high score ?
jacobly a écrit:I used simulated annealing programmed in C to get all of my scores. Initially I assumed that I was restricted to integer coordinates which was difficult to optimize and didn't produce very good scores. Then I found out that other people were getting higher scores with fractional coordinates so I switched to a continuous algorithm. At some point I noticed that most of my good configurations had the stars near a "hexagonal" lattice of points where each point is 20 units away from 6 other points. I used this information to create another discrete implementation that only considered the points on this lattice. This let me find close to an optimal score fairly quickly, which I could then polish off by alternating two continuous algorithms. Since I was working with binary floats the whole time, I had no reasonable way to fully optimize the last digit when computed with decimal rounding error, and I ended finding a solution within an ulp of first place in 3 categories.
https://tiplanet.org/forum/viewtopic.php?f=49&t=20678&start=10#p223474



Merci à vous tous pour les efforts, mais aussi pour vos très nombreux messages positifs d'encouragements ou remerciements ayant accompagné vos participations ou comptes rendus de recherche, et qui nous ont fait bien chaud au coeur. :) En effet, ce concours a nécessité de notre part un investissement bénévole très conséquent ainsi qu'une forte abnégation puisque nous n'avons compté :
  • ni notre temps, avec littéralement 4 mois de préparation qui sont à rajouter aux 3 mois s'étant écoulés depuis son lancement
  • ni les goodies, nombre d'entre eux provenant de nos stocks personnels pour lesquels nous avons raclé jusqu'au fond des tiroirs, afin d'accompagner généreusement et équitablement un maximum de lots par catégorie
  • ni notre argent, avec des frais d'expédition atteignant déjà 3 chiffres alors que les envois ne sont même pas terminés
A bientôt. ;)
Lien vers le sujet sur le forum: Résultats catégorie NumWorks concours Galactik rentrée 2017 (Commentaires: 24)

DeeperYouGo, la grande descente pour Oiram CE

Nouveau messagede critor » 11 Déc 2017, 17:46

7698Pour t'amuser cette semaine voici DeeperYouGo, un pack de 6 niveaux par Nero_the_Necro pour le moteur de jeux Mario-like Oiram CE sur ta TI-83 Premium CE.
Mario Oiram commence son aventure au Paradis, mais, comme le suggère le titre du pack, ainsi que les titres de niveaux, va rapidement descendre sur Terre, puis sous l'eau, sous terre... à la poursuite du terrible Bowser Reswob.

Serait-ce une véritable descente aux Enfers ?... A toi de le découvrir si tu en as le courage ! ;)












Rappelons que Oiram CE nécessite les bibliothèques C téléchargeables ci-dessous. Rien de compliqué, juste à transférer les fichiers en question devenant alors immédiatement fonctionnels. :)




Téléchargements :
Lien vers le sujet sur le forum: DeeperYouGo, la grande descente pour Oiram CE (Commentaires: 1)

Vote Program Of The Year ticalc.org 2017 - TI-Z80 couleur

Nouveau messagede Lionel Debroux » 11 Déc 2017, 20:04

Après la catégorie TI-Z80 monochrome la semaine dernière, le deuxième vote pour élire un autre programme de l'année 2017 (Program of the Year, abrégé en POTY) sur ticalc.org a été lancé.

La deuxième catégorie est pour la 84+CSE, avec deux programmes en compétition cette année:


Nous vous encourageons toujours à aller voter sur ticalc.org, parce que ce vote reste un rendez-vous significatif de la communauté, et il est bien sûr d'autant plus significatif qu'il y a plus de votants :)
Rappelons que pour voter, il faut avoir un compte; pour les inscrits, le sondage est sur la page principale du site, toujours dans la barre de droite, en-dessous du flux Twitter.

Les autres votes à venir seront pour les 83PCE / 84+CE (TI-eZ80), les TI-68k et les Nspire. Probablement dans cet ordre.
Lien vers le sujet sur le forum: Vote Program Of The Year ticalc.org 2017 - TI-Z80 couleur (Commentaires: 6)

Oiram CE, 8 niveaux à la Super Mario 3 par John35588

Nouveau messagede critor » 12 Déc 2017, 13:25

7698En attendant les vacances, pour continuer à avoir du fun sur Oiram CE, le passionnant moteur de jeux Mario-like pour ta TI-83 Premium CE, John35588 te sort cette semaine son propre pack de 8 niveaux.

On note une inspiration des mondes du jeu Super Mario Bros 3 sorti en 1990 sur console Nintendo NES (ou dès 1988 pour la console Famicom japonaise) pris dans l'ordre chronologique : Grass Land, Desert Land, Water Land, Ice Land, Pipe Land et Sky Land, voir même Dark Land pour le dernier :

Ce n'est certes pas la première fois que l'on note de telles similitudes, mais cela n'en reste pas moins un bel hommage au monument vidéoludique de toute une génération, à moins que tu ne sois plutôt un·e disciple du regretté Maître Sega. Dommage toutefois que jusqu'à présent, personne n'ait été capable d'adapter le niveau 5 de Super Mario Bros 3, Giant Land, ce dernier étant systématiquement sauté dans ce type de pack.




Téléchargements :
Lien vers le sujet sur le forum: Oiram CE, 8 niveaux à la Super Mario 3 par John35588 (Commentaires: 1)

Fabrique un synthé avec la carte DSP TI-C5535 - #Épisode 2

Nouveau messagede Wistaro » 12 Déc 2017, 19:03

Il y a quelques semaines, nous te parlions d'une carte électronique programmable, fabriquée par Texas instrument, la TMS320C5535 eZdsp.
8206
Mais cette carte n'était pas une carte ordinaire, c'était une carte DSP, pour Digital Signal Processing.

Comme nous le disions, les possibilités offerte par cette carte étaient nombreuses.



Aujourd'hui, après la théorie, passons à la pratique!


Je vous propose de réaliser un premier projet tout au long de cet série d'articles: un synthétiseur au clavier.
Il s'agit en quelque sorte d'un piano virtuel. Vous appuyez sur des touches de votre clavier, et la carte DSP joue un son, différent pour chaque touche.
Tous les synthétiseurs utilisent ce principe! Une circuit détecte l'appui d'une touche (par exemple, d'une touche au clavier s'il s'agit d'un piano électrique), et un autre circuit basé sur un ou plusieurs DSP se chargent de générer le signal.

Intéressant non?
Si vous êtes prêts, nous pouvons commencer.

Tout d'abord, il est important de définir notre cahier des charges, qui, dans un premier temps, vas être très simple! Nous serons peut-être amené à l'améliorer au fur et à mesure des épisodes de cette série. Aujourd'hui, nous ne nous imposons que très peu de limites!
En effet, nous voulons juste générer un son audible, à chaque appui d'une touche au clavier. Le programme devra tourner en boucle, pour pouvoir saisir autant de notes souhaitées. Nous pourrons ainsi créer une mélodie si nous sommes inspirés! :D

Nous voyons donc qu'il y a 2 parties majeures dans ce projet:
  • Générer un signal audible
  • Détecter l'appui d'une touche au clavier


Je vais détailler chaque partie, et vous allez voir que même si cela semble peut-être un poil complexe, ce n'est en réalité par le cas!

Commençons par la génération du son.


Un son, c'est quoi? C'est tout simplement une vibration de l'air. Ces vibrations se propagent un certain nombre de fois par seconde, c'est ce qu'on appelle la fréquence. Cela, vous savez ce que c'est. C'est en quelque sorte la "hauteur" du son: un son haute fréquence sera perçu aiguë, un son basse fréquence sera grave. Quand vous écoutez de la musique sur une enceinte, celle-ci va faire vibrer une membrane sous l'action d'une tension électrique, qui va faire vibrer les molécules d'air. Ces vibrations vont arriver jusqu'à vos tympans qui vont recevoir ces vibrations, et vous allez entendre quelque chose. Enfin, normalement.
Mais comment la source (votre téléphone, votre ordinateur...) génère t-elle la tension qui arrive à faire bouger la membrane? En fait, rien de secret, c'est très simple! Lorsque la source envoie une tension positive, la membrane est poussée dans un sens, et lorsque la tension est négative, elle est poussée dans l'autre sens. La répétition de cette tension positive, puis négative, puis positive, etc. va alors faire vibrer les molécules d'air: c'est le but recherché. Notez que le temps entre ces répétitions est la période, soit l'inverse de la fréquence (Pour être plus pointilleux, il s'agit de la demi-période! La période complète étant la temps entre 2 tensions de même signe!).

Autrement dit, pour un son plus aiguë, il va falloir être rapide!

Maintenant, quelle fonction mathématique possède des alternances négatives et positive au cours du temps? Il s'agit des fonction périodiques de valeur moyenne nulle. La plus simple d'entre-elle, est le sinus.

OK, maintenant nous savons que notre carte doit générer un signal sinusoïdal d'une certaine fréquence. Mais comment faire ça? Notre carte ne traite que les signaux binaires, à priori.
Sauf que nous sommes sur une circuit DSP, et que le traitement des signaux, c'est son job.

Encore une fois, le principe va être simple. Nous allons lui donner en entrée un nombre, par exemple 42. Puis un petit composant va se charger de convertir ce nombre en impulsion électrique. Ce petit composant s'appelle un Convertisseur Digital Analogique, ou DAC en anglais.
Son but? Convertir un valeur en un signal électrique.
Ici, le DAC sur notre carte est un AIC TI-3204, qui échantillonne les signaux à 192kHz.


Il ne reste plus qu'à calculer les valeurs d'un sinus pour pouvoir ensuite les envoyer au DAC.

En réalité, c'est un peu plus complexe. Pour des raisons de gestion de la mémoire, il serait problématique de calculer à chaque fois tous les points du signal sinusoïdal. Il est préférable de le pré-calculer au lancement du programme, puis de s'en servir après. N'oubliez que pas que nous sommes sur un circuit DSP!
J'ai donc au préalable généré une sinusoïde sur 16bits signés (capacité du DAC), c'est à dire qu'en sortie il y aura
$mathjax$2^{16}$mathjax$
niveaux de tension.

La configuration du DAC est un peu complexe, car il faut paramètrer beaucoup de choses sur l'AIC et les ports. Il est vivement recommandé de se baser sur la documentation de la carte!




Il ne reste plus qu'à envoyer le signal! Mais le problème est ici que nous ne pouvons pas jouer sur le fréquence, étant donné que nous avons pré-généré le sinus! J'ai donc bidouillé un peu le code pour que quand la variable fréquence varie, le son change. Par la suite, nous essayerons de faire quelque chose de plus propre! Mais pour le moment, ce n'est pas grave. Remarquez aussi que j'ai copié le signal 2 fois, car nous sommes sur un port stéréo.
Cela fonctionne très bien. Dans un prochain épisode, nous verrons comment générer un signal plus propre, certes, mais aussi différent d'un signal sinusoïdal. Chaque forme de signal a sa tonalité bien particulière. Par exemple, un signal carré fait beaucoup pensé aux synthétiseurs dans les musiques des années 80 :p Il sera également possible d'appliquer des filtres, des effets au signal pour le rendre beaucoup, beaucoup plus cool. Mais pour l'instant, occupons-nous de notre petit piano électrique!

Voilà la fin de la première partie!
Maintenant, il ne reste plus qu'a détecter les touches du clavier.
Vous savez peut-être que lorsque vous appuyez sur une touche, votre ordinateur reçoit une donnée correspondante à la touche envoyée. On appelle ça le code ascii. Et bien, grâce à un petit programme installé de base sous windows, Hyperterminal, il est possible d'envoyer cette donnée non pas à Windows, mais plutôt sur un port spécifique. Un port est globalement une entrée/sortie de l'ordinateur qui communique au moyen d'un liaison série: un fil sert pour émettre des données, et un autre pour les recevoir.



Et, ça tombe bien, notre carte TMSezDSPC5535 est connecté sur l'un de ces ports séries de notre ordinateur! I suffit donc de connecter (virtuellement bien sûr! ) le fil d'émission de l'ordinateur sur le fil de réception de la carte , pour assurer une liaison entre les 2 deux. Ainsi, quand vous appuierez sur "E", le carte DSP recevra "E".
Mais cela n'est pas magique. Sur la carte, le composant qui réalise cela et un UART. Il fonctionne aussi bien en émission, qu'en réception. Ici, nous travaillons avec une fréquence de transmission de 115200 bits par seconde. Il faut donc que Hyperterminal reçoive aussi les données à cette fréquence, sinon il y a aura un gros problème!


Comme vous pouvez le voir à gauche, le code final est très simple. Dans une boucle infinie, je regarde en continu si je reçois un caractère. Si c'est le cas, alors je génère un signal pendant 1 seconde, et je réinitialise tout. On peut remarque que la je passe en paramètre de ma fonction qui génère le signal la touche appuyée. En effet, je m'en sert pour que, à chaque touche soit associée un son différent!
Notez que le programme pourrait être bien plus optimisé, notamment en travaillant avec les interruptions! Nous verrons ça un peu plus tard.

Bon, en réalité, avec mes bidouillages, le signal est en sortie n'est pas très beau. Il est même assez loin du signal sinusoïdal. Voyez par vous-même :)
Image Image


En effet, si vous regardez mon code, vous voyez que je n'envois pas la totalité du sinus à chaque fois. Pour faire varier la fréquence, je n'envoie qu'une partie à chaque fois, et je répète cette partie. Le signal n'est donc pas sinusoïdal en sortie. D'ailleurs, c'est également bien visible sur le spectre, qui comporte quelques harmoniques.


Attention donc les oreilles :troll:
Nous sommes encore loin d'un beau synthétiseur, mais on s'approche :D

Voici une courte vidéo vous montrant le résultat :p



Le code source du projet est disponible gratuitement sur GitHub: https://github.com/Wistaro/DspSynthesizer


Et ensuite...?
Dans les prochains épisodes, comme je l'ai déjà dit, nous améliorerons ce projet, notamment avec ceci:
  • Génération de signaux plus propre
  • Génération de différents types de signaux
  • Ajout d'effet et filtres
  • Lecture d'une musique
  • Affichage d'un vu-mètre
  • Transformateur de voix
  • Reconnaissance vocale

Et bien plus encore! N'hésitez pas à me donner vos avis!

A bientôt!

Épisode précédant - Épisode suivant
Lien vers le sujet sur le forum: Fabrique un synthé avec la carte DSP TI-C5535 - #Épisode 2 (Commentaires: 4)

Beta HP Prime 13217: débogueur programmes CAS+Python

Nouveau messagede critor » 14 Déc 2017, 22:49

Hewlett Packard diffuse cette semaine de nouvelles versions beta de sa suite logicielle HP Prime, les versions 13217 datées du 11 décembre 2017 :
  • logiciel de communication HP Connectivity Kit
  • logiciel d'émulation HP Prime Virtual Calculator
  • firmware HP Prime

Rappellons que cette série de versions beta rajoute d'importantes fonctionnalités, comme la possibilité de programmer ses fonctions avec une écriture ressemblant au Python losque l'on est dans le contexte CAS, nouveauté très pertinente dans le cadre des nouveaux programmes du lycée dont l'application a commencé cette rentrée 2017 en Seconde. :bj:

Ce n'est pas la première fois que Hewlett Packard met quelque chose de remarquable niveau programmation sur sa HP Prime, puisque c'est à ce jour le seul modèle disposant d'un débogueur intégré. Accessible avec le bouton tactile Debog sous la liste des programmes ou via la commande DEBUG(), il permet d'accéder à une interface exécutant le programme pas à pas tout en suivant l'évolution des variables que l'on souhaite. De quoi obtenir la réponse avec justification directement recopiable d'un bon 90% des questions d'algorithmique au BAC ! :bj:


Toutefois, cela ne fonctionnait que dans le contexte numérique. Non disponible donc avec les programmes CAS, et même pire la saisie manuelle de l'instruction DEBUG() dans un contexte CAS déclenchait un redémarrage de la calculatrice. :'(


La version 13217 fait enfin fonctionner correctement la commande DEBUG() dans le contexte CAS. Il devient donc enfin possible d'y dérouler pas à pas l'exécution de fonctions de programmes nécessitant ce contexte. :)

Mais cela implique aussi autre chose d'extraordinaire, c'est que les programmes Python, langage ne fonctionnant que dans le contexte CAS, pourront eux aussi être déroulés pas à pas ! :bj:


On regrettera toutefois plusieurs choses pour le débogueur CAS, cette beta ayant été annoncée comme finale :
  • uniquement en anglais
  • remplacement de l'interface du débogueur numérique par une interface texte
  • impossibilité de choisir les variables à surveiller, ce qui pourra être embêtant quand il y en aura beaucoup
  • le détail des lignes en cours d'exécution est affiché non pas comme saisies dans l'éditeur (c'est-à-dire en HPPPL ou Python) mais avec une notation fonctionnelle qui ne correspond à aucun de ces deux langages
Dommage particulièrement avec ce dernier point qui pourra dérouter les utilisateurs les moins experts, ceux-ci ayant besoin de connaître 3 langages différents pour pouvoir dérouler pas à pas un programme Python sur leur HP Prime :
  • le langage Python bien évidemment
  • le langage HPPPL propre à la HP Prime pour pouvoir adapter le code Python lorsque faisant appel à des commandes ou fonctions absentes ou nommées autrement sur cette calculatrice
  • le langage fonctionnel propre au débogueur CAS HP Prime



Nous ne pouvons qu'être ravis des très grandes avancées en terme de programmation et donc de conformité aux actuels et futurs programmes du lycée français sur HP Prime avec cette série de versions beta. :bj: Surtout quand c'est innovant/exclusif, d'autres constructeurs pourtant bien plus populaires n'ayant toujours rien sorti dans ce contexte à ce jour alors que les nouveaux programmes sont en application depuis déjà 3 mois et demi.

Nous doutons toutefois que le fonctionnement assez complexe choisi sur HP Prime, à savoir l'obligation du contexte CAS pour le Python qui n'a pourtant rien d'une fonctionnalité liée au calcul formel ou même littéral, avec en prime un débogueur distinct qui n'a pas du tout le même degré de finition que le débogueur de l'environnement numérique, puisse véritablement faciliter la vie du lycéen moyen qui, rappelons-le, est censé débuter avec son premier langage de programmation textuel en Seconde. Si les habitués/experts l'enjamberont sans problème, la marche nous semble bien haute pour les débutants de Seconde voir même au-delà, vu qu'ils ne feront certainement pas tous le choix de se perfectionner avec les option ICN et/ou spécialité ISN.

Mais si Hewlett Packard continue sur sa soudaine lancée, nul doute que cela pourra être amélioré dans de futures mises à jour. ;)




Changelog officiel complet (anglais) :
Show/Hide spoilerAfficher/Masquer le spoiler
Some changes since the first two sets of beta files:

1. Added feature:
a. [a b/c] key works with the [angle] key to toggle complexes also.

FIXED ISSUES:
1. REPLACE function with strings could misbehave sometimes.
2. FREEZE not working anymore
3. Issue with BLIT using data from outside of graphic.
4. Tucked away drawing benchmark tool in 3d grapher.
5. Modified CellHasData and ClearCell to work on range instead of list.
6. Some speed improvements to catalogs with some types of geometry apps.
7. Fixed ARC drawing and enhanced sample programs.
8. High system resource use when hovering or pressing a button in emulator.
9. IFERR RETURN 10 … would not return 10 but a function of “RETURN 10”
10. Issues with user defined functions not loading properly on system boot.
11. Improvements to QPI output. Renamed back to QPI since no other ideas are really a significant improvement in a universal way.
12. Catalog sometimes was including geometry variables erroneously.
13. Reduced screen flicker in several places through the system (symb screen, choosers).
14. Various reported CAS issues.
15. Tweaked CAS debugging so it looks more like the HPPPL debugger screen.
16. Color changing during “transform” of a function causes screen to go solid color.
17. Matrix growing not checking against proper size limits (20K items).
18. ALPHA sorting in program list causing problems.




Téléchargements :
Source : http://www.hpmuseum.org/forum/thread-9678.html
Lien vers le sujet sur le forum: Beta HP Prime 13217: débogueur programmes CAS+Python (Commentaires: 5)

-
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.
1443 utilisateurs:
>1400 invités
>38 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)