π
<-
Chat plein-écran
[^]

News 2018
Août (11)
Juin (3)
Mai (10)
Avril (2)
Mars (4)

News 2017
Août (15)
Juillet (18)
Juin (1)
Mai (7)
Avril (4)
Mars (7)

News 2016
Août (17)
Juillet (16)
Juin (2)
Mai (2)
Avril (1)
Mars (5)

News 2015
Août (25)
Juin (4)
Mai (9)
Avril (4)
Mars (10)

News 2014
Août (4)
Juin (11)
Mai (12)
Avril (9)
Mars (12)
Janvier (13)

News 2013
Octobre (11)
Août (5)
Juin (9)
Mai (12)
Avril (10)
Mars (7)
Janvier (10)

News 2012
Août (12)
Juillet (10)
Juin (13)
Mai (22)
Avril (8)
Mars (5)

News 2011
Octobre (23)
Août (1)
Juin (29)
Mai (11)
Avril (5)
Mars (3)

News 2010
Août (2)
Juin (5)

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

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

Nouveau messagede critor » 18 Nov 2018, 19:31

9806Voici les résultats du défi de Force de notre Triconcours de rentrée 2018. Vous avez été pas moins de 15 à produire 120 participations.

Il s'agissait d'éclairer un projecteur à 252 lampes de façon maximale et optimale à l'aide de 30 potentiomètres, implémentés par un script
Python
évaluant automatiquement le score.

arrive
13ème
en nous allumant 215 lampes pour
188,1
points.


muni de sa fidèle
HP Prime
termine quant à lui
12ème
en éclairant 236 lampes ce qui lui vaut
210,9
points.


se classe
11ème
en illuminant 239 lampes évaluées à
216,4
points.


Et maintenant les gagnants :
termine
10ème
en faisant briller 242 lampes valant
217,7
points.


prend la
9ème
place en embrasant 243 lampes et récoltant
219
points.


/ à sa
8ème
nous ensoleille de 244 lampes avec
221,3
points.

@Zezombye, comment as-tu fait ? ;)

Zezombye a écrit:j'ai fait des entiers de 0 à 93 au lieu d'utiliser des fractions.

J'ai tout d'abord essayé une approche avec peu de potentiomètres : essayer toutes les combinaisons de 1, 2, 3, 4 potentiomètres et regarder laquelle allume plus d'ampoules. Mais si je me souviens bien, on peut allumer un maximum de 212 ampoules avec 4 potentiomètres (et mon bruteforce allait pas au delà) : comme le score peut pas être supérieur au nombre d'ampoules allumées, il fallait forcément alimenter tous les potentiomètres.

Du coup après j'ai essayé (comme le disait hackcell) en mettant tous les potentiomètres à une valeur : un peu de bruteforce et on trouve que le score atteint un sommet pour 8 ou 9 (fractions de 93). Du coup je fais un bruteforce pour mettre tous les potentiomètres à 8 ou 9 : j'atteins 215 maximum, pas assez...

Après j'ai fait une fonction "convergeuse" qui prend une combinaison (celle générée avec les 8 et 9) et diminue un potentiomètre de 1, en choisissant ce potentiomètre de telle sorte à ce qu'il fasse perdre le moins de score (ou gagner le plus). Avec ça je crois que je suis allé dans les 217/218.

Enfin, j'ai fait une boucle infinie qui prend des valeurs aléatoires pour chaque potentiomètre entre 7 et 12, avec ensuite ma fonction convergeuse qui traite chaque combinaison. Là je suis allé facilement dans les 220, avec un score à 221.274 (mon final) après quelques dizaines de minutes (mais j'ai été chanceux).

Sur les conseils de DS, j'ai fait un algo pseudo-génétique qui génère 100 combinaisons, prend les 30 meilleures et change quelques valeurs : j'atteins 221.3, mais toujours pas assez. (si je m'y étais pas pris le jour même, j'aurais peut être pu le laisser tourner un peu plus longtemps :D)

https://www.planet-casio.com/Fr/forums/topic15371-2-Triconcours-et-l-epreuve-de-force.html#159394


/ décroche la
7ème
place toujours avec 244 lampes, mais à la différence arrive à n'en griller aucune autre ce qui lui fait récolter
221,6
points.

@Hackcell, comment t'y es-tu prise ? ;)

Hackcell a écrit:
Hello tout le monde, depuis peu, à débuté l'épreuve de force (non plutôt bien choisi, vous verrez pourquoi plus tard ^^ ) en python du tri-concours de la rentrée 2018.


Le but, obtenir un score maximal, envoyer la réponse et décrocher un lot... Plus sérieusement, c'est un poil plus complexe, il s'agit de régler virtuellement 30 potentiomètre pour allumer jusqu'à 252 ampoules (21 * 12). Pour ce faire, vous utilisez la fonction pot en indiquant le numéro du potentiomètre (de 0 à 29) à régler et la valeur du potentiel que vous souhaitez lui assigner(entre 0 et 1), faîtes ceci pour les 30 potentiomètre (ou pas, chaque potentiomètre est réglés de base sur 0) regarder le résultat et envoyé ce dernier a Planète TI.

Jusqu'ici, c'était les informations disponibles sur l'annonce du concours, maintenant, passage aux données Secret Défense que j'ai pu obtenir via un poil de rétro-engineering et que je vous partage au péril de ma vie...

Tout d'abord, le calcul des scores, pour l'instant, j'ai déterminé que votre score vaut : Amp_all - (Alim + Amp_grill/2 + Gaspi/5 + pertes/10)
avec:
-Amp_all le nombre d'ampoules allumées
-Alim l'alimentation utilisée
-Amp_grill le nombre d'ampoules grillées
-Gaspi l'énergie gaspillée
-Pertes l'énergie perdue

Ces différentes fonctions sont calculées comme suit:
-Alim est la simple somme du potentiel assigné à chaque potentiomètre
-Gaspi est l'énergie de l'alimentation utilisé pour allumer les ampoule déjà allumé (avec 252 ampoules, ça peut monter très vite)
-Pertes est cette fois ci l'énergie utilisé mais qui ne suffit pas à allumer une ampoule

La définition de perte peut vous sembler étrange, à moins que vous ayez connaissance de l'élément suivant :
-Chaque potentiomètre est 'relié' à un certain nombre d'ampoules, ainsi chaque ampoule reçoit de l'énergie de différentes potentiomètres
-Pour savoir si une ampoules s'allume, elle regarde donc la somme de l'énergie reçue par les différents potentiomètre qui lui sont attaché, ensuite, la loi est simple, moins de 1, éteinte, entre 1 et 2 (bornes incluses) allumée, plus de 2, grillée.

Un autre point intéressant à noter, est ce que l'on pourrait appeler la discrétisation des valeurs prise par le potentiomètre, en effet, il s'agit ici d'un programme informatique, le potentiel ne peux donc pas être continue, il est discret, ainsi il n'admet qu'un nombre finis de valeurs entre 0 et 1 (bornes incluse), plus précisément, 101 valeurs, avec un écart de un centième entre chaque.

A partir de là, on peut calculer le nombre de possibilités, attention.... 30 potentiomètre, avec 101 possibilités, ça fait, ça fait... Bravo, ça fait bien 101^30, soit un ordre de grandeur de 10^31.. Oui oui, un 1 et 31 zéros derrière, pour vous donner une idée, voici sa tête :

1347848915332905650585522351309777516867383425202804564353001
(tapez donc 101**30 dans votre console python)


C'est donc bien une épreuve de force ^^ , même si le brute force ne me semble pas être une bonne idée

Cependant, il existe un grand nombre de possibilités qu'il n'y aurait pas besoin de chercher, ce sont celles où la somme des potentiels est strictement inférieure à 1, dans de telles conditions, aucune lampe ne pourrait s'allumer.

Ainsi, on fait de plutôt bon score en mettant tous les potentiomètres à la valeur X avec 1≤ 30X ≤ 2, ça peut paraître barbare, mais on peut obtenir de plutôt bon score sans se fouler...

Enfin, si jamais je m'appelais 3blue1brown, je vous parlerai sans doute du fait qu'il s'agit là de trouver le maximum d'une fonction dans un espace à 30 dimensions, fonction qui n'est pas continue sur cette espace, même si je la soupçonne d'être continue par morceau (mais le démontrer....) et qu'il existe des méthodes pour trouver des maximum pour ces fonctions, mais c'est pas tout à fait mon niveau, donc on vas s'arrêter là (malheureusement pour vous ^^).

Pour ma part, il est minuit vingt le 20 septembre 2018, et je pense avoir trouvé une solution à presque 212 points.

Bon, le miracle attendu n'a pas eu lieu (j'ai gagné environ 0.2 point).

J'avais pour intention de bricoler un autre algorithme de recherche de maximum basé sur une sorte de gradient à 30 dimensions, mais je me suis arrêtée 5 minutes pour regarder la suggestion de DS, un algorithme génétique, résultat, j'en ai codé un en une bonne heure, la page Wikipédia qui explique comment réaliser un telle algorithme est plutôt bien faite, donc au final j'ai pas eu tant besoin de réfléchir, j'ai pas eu besoin de café, en revanche, j'aurais sans doute besoins de chance ^^

Donc merci DS pour ta suggestion.

Pour être plus précis, voici les paramétrés de mon algo:
— Population : 100 individus
— Génome : 30 chiffre de 0 à 1
— Système de score : Celui de base pour le concours
— Sélection : Trie des individus par score en commençant par le meilleur, choix des accouplements via un (np.random.random()*10)**2 (pas optimal, je pourrais gérer ça de manière plus souple, mais ça ira pour l'instant). Je réalise 49 accouplements, puis j'ajoute le meilleur de la génération précédente s'il ne s'est pas reproduit et complète avec des individus aléatoires.
— Empattement : 70%
— Mutation : 1% (Avec du recul, je devrai l'augmenter un poil)

Et puis c'est tout, pour l'instant ça grimpe gentiment et j'en suis à 210,7 points

L'algorithme commence à sortir des maximum, sauf qu'il a un peu de mal a s'extraire de ces maximum locaux, il est temps de tourner les boutons pour voir ce que ça fait ^^

Et puis je mets également mon code en pièce jointe ^^

Fichier joint
:
https://www.planet-casio.com/files/forums/gene-159509.py

https://www.planet-casio.com/Fr/forums/topic15371-1-Triconcours-et-l-epreuve-de-force.html https://www.planet-casio.com/Fr/forums/topic15371-1-Triconcours-et-l-epreuve-de-force.html#158330 https://www.planet-casio.com/Fr/forums/topic15371-2-Triconcours-et-l-epreuve-de-force.html#159509


Erwin R.
en
6ème
position et bien que pourvu d'une
HP Prime
n'allume que 243 lampes, mais à la différence de façon bien plus écologique car gaspillant moins d'énergie, ce qui lui fait atteindre
221,8
points.

@Erwin, how did you do it ? ;)

Erwin R. a écrit:From what I can say from the description indicates that you control 30 potentiometers with weird interconnections, with the goal of lighting the maximum amount of lights. Playing the game in your calculator goes like this:

  1. Run the app
  2. Type pot(number,value)
  3. See results/score
  4. Go to step 2
Of course it goes really slow. So the optimal solution is descramble the app code to understand the function they are using… but this is a lot of work! so I just decided to use bruteforce, starting with a random seed and iterating per potentiometer in increments of 1/34:

The script dumps the best combinations as .txt files. It was very exciting to check the new scores every morning. Like scratching a lottery ticket.

This is also slow, but is not
THAT
slow if you use multiples machines with multiple instances of the script running. You can even use your
cluster
made of old laptops that nobody wants in your office, laptops in beautiful racks made of cardboard:

My score was not the best or near the first places, in fact was #6, but I had a lot of fun. Next time I will try to use less brute-force.

Even when my solutions were lazy and poorly executed, I think this is the real nature behind the love for the calculators. Having doses of entertainment in a restricted environment.

It is so special to be in 2018 and still have contest like these french ones. I am happy for that today.

https://erwin.ried.cl/post/180137142402/a-cool-calculator-challenge-triconcours-universel


Mention honorable pour / , administrateur
Planète Casio
qui bien que désormais à la retraite était encore en fonctions lors du lancement du concours, et ne peut donc pas être classé. Il nous fait scintiller 245 lampes pour
222,9
points.

@Darks, comment as-tu procédé ? ;)

Dark storm a écrit:Pour ma part, je suis parti sur un algo génétique assez "brut", dont je pouvais faire varier les paramètres en live à chaque génération, pour introduire de grosses modifications du génome, ajouter des configurations intéressantes, ou bien recentrer autour d'un point.

Ça a tourné sur le VPS pendant deux ou trois jours, j'arrive à un score de 225 et des poussières.

Les derniers rapports générés sont dispo sur mon VPS : https://files.darks.fr/concours/

https://www.planet-casio.com/Fr/forums/topic15371-2-Triconcours-et-l-epreuve-de-force.html#159786


Poursuivons avec les grand gagnants :
/ à la
5ème
place nous fait resplendir 247 lampes ce qui lui fait encaisser
225,7
points.

@Nemh, explique-nous ! ;)

Nemhardy a écrit:Après avoir tapé un peu trop d'une traite, je me rends compte que c'est peut-être
un poil
long, pour pas grand chose non plus… mais je voulais présenter un peu toute ma démarche, qui peut rester intéressante si vous n'avez jamais entendu parler de programmation linéaire, ou d'utilisation de
glpk
… Ne serait-ce que pour voir comment ça peut servir… On va dire que ça va dans le sens de PC qui peut servir à introduire à différents concepts autour de l'informatique ! ^^ Un jour je mettrai ce genre de post trop long dans un blog qui n'existe pas encore… :p)

Donc, personnellement, j'ai atteint un score de 225,699.

Mon approche a été encore une fois (comme l'an dernier déjà… :p) pas d'une extrême intelligence d'analyse de l'instance qui nous était donnée, mais c'était un premier jet et je voulais voir jusqu'où on pouvait aller avec, avant de passer à autre chose… ce que je n'ai pas fait par une lecture trop peu lucide des modalités du concours… Enfin, passons là dessus !

Déjà pour ceux qui connaissent, l'intitulé rappelle bien vite le problème Illumination dispo sur http://www.primers.xyz, où le but est aussi d'allumer un maximum d'interrupteurs à l'aide d'un ensemble d'interrupteurs branchés en va-et-vient ; ici la nuance c'est l'aspect continu dans l'actionnement des interrupteurs, puisqu'on passe de boutons dans
Illumination
à des potentiomètres ici.

Même s'il semble que ça peut rendre le problème plus compliqué (l'espace des configurations augmentant alors de manière assez incontrolée), il s'avère que pas mal de problèmes sont en fait plus facile à résoudre lorsqu'on vit dans un espace continu (typiquement dans un tel espace, on peut «glisser» d'une configuration l'autre sans soucis, et, avec un peu de chance, avoir notre fonction objectif continue le long du glissement, nous ouvrant alors la voie à de l'optimisation en glissant de manière maligne parmi les configurations, là où dans un espace certes plus réduit, mais discontinu, il est plus difficile de lier deux configurations différentes, puisque ça revient à faire des sauts, et un peu tout comme n'importe quoi peut se passer lors de ces sauts).

Dans un premier temps j'ai essayé de résoudre des versions simplifiées du problème, pour voir les scores qu'on peut tout de même en tirer. En lisant l'analyse faite par Hackcell plus haut (encore une fois, c'était chouette de partager ça ! :) ), un problème simplifié qui vient à l'esprit peut être le suivant :

On cherche à allumer toutes les ampoules (
ie.
à faire passer
la valeur des ampoules au dessus de 1, chacune), tout en minimisant la
somme des valeurs des interrupteurs (ça peut paraître un premier moyen
de limiter le gaspillage).

On n'a aucune garantie que ce problème simplifié va donner quoi que ce soit de bon vis à vis du problème initial, mais ça me semblait un bon début pour prendre le tout en main. ^^

Si on étudie un peu le fonctionnement des ampoules et de leurs potentiomètres, on s'aperçoit que la valeur de chaque ampoule n'est autre que la somme des valeurs des potentiomètres qui la commandent, en particulier c'est une combinaison linéaire de ces valeurs. La fonction que l'on cherche à minimiser l'est aussi : bingo ! On a en fait là un programme linéaire à résoudre, et ça, et bien on sait bien faire ! Des solveurs efficaces existent déjà, et normalement on n'a plus qu'à encoder notre problème pour un de ces solveurs et voir ce qu'il nous sort. C'est ce que j'ai fait pour ce premier problème simplifié, en utilisant le solveur glpk. Mon encodage du problème en MathProg ressemble à ça :

Code: Tout sélectionner
set potentiometres := (0 .. 29);
var pot{p in potentiometres};

set ampoules := (0 .. 251);
var amp{a in ampoules};

param amp_vers_pot{a in ampoules, p in potentiometres};

minimize consommation: sum{p in potentiometres} pot[p];
    s.t. reseau{a in ampoules}:
        amp[a] = sum{p in potentiometres} amp_vers_pot[a,p]*pot[p];
    s.t. allume{a in ampoules}:
        amp[a] >= 1;
    s.t. plage_potentiometre{p in potentiometres}:
        0 <= pot[p] <= 1;
solve;

printf 'config = [';
printf '%.3f', pot[0];
for {p in (1..29)}
    printf ', %.3f', pot[p];
printf ']\n';

data;

param amp_vers_pot: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 :=
    0 1 1 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
    1 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1
    2 0 0 1 1 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1
    3 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0 1 0
    4 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0
    5 0 0 1 1 0 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 0 0
    6 0 0 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1
    7 0 0 1 0 0 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0 0 0 1
    8 1 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 0 1 1 1 1 1 0 0 0 0 1
    9 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0
    10 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0
    11 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 1
    12 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 1
    13 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 0 1 1 1 0 0 1 1 1 0
    14 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 0
    15 0 1 1 1 1 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0
    16 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0
    17 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0
    18 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 1 0 1 1 0 0 0
    19 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1
    20 1 1 0 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 0 1 1 0 0 0 1 0 0 0 1
    21 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 1 1
    22 1 0 1 1 1 1 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1
    23 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0
    24 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1
    25 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0
    26 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 0 1 1
    27 1 1 0 1 1 0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0
    28 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 1 0
    29 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0
    30 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0
    31 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0
    32 1 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0
    33 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1
    34 1 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1
    35 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1
    36 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1
    37 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 1 0 0 0 1 1
    38 1 1 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 0 1
    39 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0
    40 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0
    41 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0
    42 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0
    43 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1
    44 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0
    45 0 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0
    46 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 1
    47 1 0 0 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 0 1 0 0
    48 1 1 1 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0
    49 0 1 0 0 0 1 1 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0
    50 1 0 1 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0
    51 1 1 1 1 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0
    52 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1
    53 1 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1
    54 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 0 0 0
    55 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1
    56 0 1 1 0 1 0 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 0
    57 0 1 1 0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 1
    58 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0
    59 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 1
    60 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 1 1
    61 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0
    62 1 1 0 0 1 0 1 1 0 0 1 0 1 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1
    63 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0
    64 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0
    65 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1
    66 0 1 0 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 0
    67 1 0 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 0 1 1
    68 1 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1
    69 0 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 1 0 0 0
    70 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 0
    71 1 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0
    72 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1
    73 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 1 1 0
    74 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 0
    75 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1
    76 0 1 1 0 1 0 1 0 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 1
    77 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0
    78 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1
    79 1 0 0 1 1 1 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 1 0
    80 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1
    81 0 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 0 0 1 0
    82 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 0 1 0 1
    83 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1
    84 1 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0
    85 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 0 1 1 1 0
    86 0 0 1 1 1 0 1 1 1 1 0 0 1 1 0 1 0 0 0 1 1 1 1 1 0 1 0 1 1 1
    87 1 1 0 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 1 1 1 0
    88 1 1 0 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 1 1 1
    89 0 0 1 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 1 0 1 0
    90 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1
    91 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 1
    92 0 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 0 1
    93 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 0 0 0 1
    94 0 0 1 1 0 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 0 1 0 1 1
    95 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1
    96 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0
    97 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 0
    98 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 0 0 1 0
    99 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0
    100 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 1
    101 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 0 1
    102 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0
    103 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 0
    104 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 1 1 0
    105 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0
    106 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 1
    107 1 0 0 0 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0
    108 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 0 0 1 1 1 0
    109 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1
    110 1 0 0 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0
    111 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0
    112 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0
    113 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0
    114 0 0 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 1 0 0
    115 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 0
    116 1 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 1
    117 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1
    118 1 1 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0
    119 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 0
    120 1 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1
    121 0 1 1 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 1
    122 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0
    123 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 0
    124 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0
    125 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1
    126 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0
    127 1 1 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0
    128 1 0 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 1
    129 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 1 0 0 0 1 1 0 1 0 1 0
    130 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0
    131 0 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0
    132 1 0 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0
    133 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1
    134 1 1 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 1 1 0 0
    135 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0
    136 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1
    137 1 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 0
    138 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 1 0 1
    139 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1
    140 0 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1
    141 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0
    142 1 0 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0
    143 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1 1 1 0 0
    144 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 1 0
    145 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 1 0 0
    146 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0 1 1 1 1
    147 0 1 1 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1
    148 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 0 1
    149 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1
    150 1 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0
    151 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 1 1 0 1 0
    152 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0
    153 1 1 1 0 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 0 1 1 1 1 0 0 0 1 1 0
    154 0 0 1 1 1 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0
    155 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 1 0
    156 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 0
    157 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0
    158 0 1 0 1 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0
    159 0 1 1 0 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 1 0 1
    160 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 1 1 0
    161 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0
    162 1 0 0 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 0 1 1 0 1 0
    163 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1
    164 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 0 0
    165 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1
    166 0 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 1
    167 0 1 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 1 1 1
    168 1 0 0 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 1
    169 0 1 1 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0
    170 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1
    171 0 0 1 1 1 1 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 0 0
    172 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1 1 0 1 1
    173 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1
    174 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1
    175 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0
    176 1 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 0 1
    177 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1
    178 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 1
    179 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0
    180 0 0 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1
    181 0 1 1 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1
    182 0 0 0 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 0 0 1 1 1 1 1
    183 0 1 0 0 0 1 1 1 1 0 1 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0
    184 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 1 0
    185 1 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0
    186 0 1 1 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1 1 1 0 1 0 1 0 0 0 1
    187 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 1 0 0
    188 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1
    189 0 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 0 1 0 0
    190 1 0 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1
    191 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0
    192 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 0
    193 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 0 0 1 1 0 1 0 1 0
    194 0 0 1 1 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 0 1
    195 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 1 1 0
    196 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 1 1
    197 0 0 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 0 1
    198 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 0
    199 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1
    200 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1
    201 1 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 0
    202 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 1 1 1 0
    203 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0
    204 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1
    205 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 1 0 0
    206 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 1
    207 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1
    208 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0
    209 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 0 1 1 0
    210 1 0 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0 0
    211 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1
    212 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 1 1 0
    213 1 0 0 0 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1
    214 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1
    215 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 0 1 0 0 1 0 1 1 1 0 0 0 0
    216 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1
    217 1 1 0 0 0 0 1 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1
    218 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 0
    219 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 1 1
    220 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0
    221 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0
    222 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1 0
    223 1 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1
    224 1 0 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1
    225 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1
    226 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0
    227 1 0 1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1
    228 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0
    229 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 0
    230 0 1 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0
    231 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1 0
    232 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1
    233 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 0 1 1
    234 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 1
    235 1 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1
    236 1 1 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 1 0 0 0 0
    237 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1
    238 1 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0
    239 1 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 1
    240 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 0 0 0 0 0
    241 0 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0
    242 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 0 0 1 0 1
    243 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1
    244 0 1 1 0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0
    245 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1
    246 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 1
    247 1 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0
    248 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 1 0
    249 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1
    250 0 0 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0
    251 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0;

end;


Je détaille rapidement ce qu'il se passe là, je me dis que ça peut toujours servir à quelqu'un qui aurait un bout de programme linéaire à encoder et résoudre un jour. ^^

Donc, sans détailler trop la syntaxe, on déclare là les tableaux potentiometres et ampoules qui contiennent juste la liste des indices des ampoules et potentiomètres en jeu dans le problème, qui vont permettre d'itérer avoir à hardcoder les plages (0 .. 29) et (0 .. 251) à chaque fois… question de bon goût juste ! Ensuite on déclare les variables pot et amp, qui sont en fait des familles de variables respectivement indexées par potentiometres et ampoules, et qui vont permettre d'encoder la valeur à laquelle on règle chaque potentiomètres et les valeurs correspondantes des ampoules. On ajoute aussi un gros tableau de paramètres qui permet de lier chaque ampoule aux interrupteurs qui la contrôlent (à bien sûr ne pas taper à la main, mais bidouiller un peu le script forcecas.py pour le générer ^^). Ne reste plus alors qu'à décrire le programme linéaire que l'on veut résoudre :

Code: Tout sélectionner
minimize consommation: sum{p in potentiometres} pot[p];
    s.t. plage_potentiometre{p in potentiometres}:
        0 <= pot[p] <= 1;
    s.t. reseau{a in ampoules}:
        amp[a] = sum{p in potentiometres} amp_vers_pot[a,p]*pot[p];
    s.t. allume{a in ampoules}:
        amp[a] >= 1;
solve;


Comme on l'a dit plus tôt, on veut minimiser l'intensité totale en sortie des potentiomètres, c'est ce qu'indique la première ligne : on minimise la somme des pot[p] pour p qui décrit potentiometres. On indique ensuite les contraintes qui spécifient notre problème (les s.t. sont à lire comme
such that
, c'est à dire
tel que
en français) : on veut que chaque potentiomètre ait une valeur entre 0 et 1 (ce sont les contraintes plage_potentiometre{p}, on a une telle contrainte par potentiomètre), que chaque ampoule ait la valeur qui lui soit attribuée par le réseau de potentiomètres (contrainte reseau, on utilise à cet endroit notre gros tableau de correspondance et calcule simplement la bonne combinaison linéaire des valeurs des potentiomètres) et enfin que chaque ampoule soit allumée (donc de valeur supérieure ou égale à 1) (ce sont les contraintes allume{a}). L'important est que toutes nos contraintes ainsi que ce que l'on veut maximiser ou minimiser soit linéaire en les variables que l'on a déclarées.

Je ne sais si c'est très clair ou utile à tous tout ça, mais je voulais montrer un peu la tête d'un fichier en MathProg, je trouvais ça sympa ! ^^

Les quelques lignes restantes sont juste là pour formater la sortie du programme (je voulais récupérer une ligne que je n'avais plus qu'à coller dans un fichier python et qui spécifierait les valeurs de chaque interrupteurs) et ne sont pas très intéressantes.


Il ne reste plus qu'à lancer le solveur sur notre programme avec glpsol --math programme_simple.mathprog. On obtient instantanément la ligne

config = [0.023, 0.223, 0.023, 0.000, 0.164, 0.132, 0.139, 0.191, 0.115, 0.146, 0.081, 0.094, 0.359, 0.083, 0.038, 0.159, 0.000, 0.000, 0.000, 0.001, 0.242, 0.158, 0.064, 0.156, 0.078, 0.105, 0.000, 0.000, 0.123, 0.068]

Là tout content on se décide à tester cette solution du problème simplifié comme solution du problème initial et là, déception… On obtient un score d'à peine un peu plus de 204. Plus en détail, on a :

Code: Tout sélectionner
All+Grill:232+20/252
Alimentat:2.989247311827957
Pertes   :0.0
Gaspillag:123.46236559139786


On constate que l'on allume bien toutes les ampoules, comme prévu, enfin en tout cas elles sont toutes à une valeur plus grande que 1, mais certaines sont grillées (on pouvait s'y attendre, vu qu'on a jamais dit à notre programme de faire attention à ça). En plus, malgré notre minimisation de la valeur totale en sortie des interrupteurs, le gaspillage reste significatif : c'est normal, puisque le gaspillage dépend de ce que font les ampoules du courant en sortie, et non simplement de la valeur de la sortie. Il va falloir raffiner.

Premier raffinement assez intuitif qui vient à l'esprit : éviter de griller des ampoules. Pour ce faire, il suffit
a priori
juste de changer s.t. allume{a in ampoules}: amp[a] >= 1; en s.t. allume{a in ampoules}: 1 <= amp[a] <= 2;. On relance le solveur, et obtient là la sortie suivante LP HAS NO PRIMAL FEASIBLE SOLUTION. Bon. En gros, ça nous apprend qu'il n'existe aucune configuration de potentiomètre telle qu'on puisse allumer les 252 ampoules en même temps sans en griller aucune, même si ça ne nous avance pas vraiment, je trouve intéressant qu'on puisse obtenir ce genre d'information aussi facilement. ^^

À partir de là, on peut penser à plusieurs pistes : on peut essayer de déterminer le nombre minimal d'ampoule que l'on accepte de griller tel qu'on puisse allumer toutes les autres. On sait que ce nombre est plus grand que 0, et inférieur à 20 (on a trouvé qu'on pouvait tout allumer en en grillant 20, avec notre premier programme). Si ce nombre est entre 1 et 5, on peut espérer le trouver relativement rapidement en bruteforcant les cas possibles (c'est à dire en testant toutes les configurations où on autorise explicitement telle et telle ampoule à être grillées), mais s'il est plus grand, ça me paraît plus délicat en passant par un bruteforce du genre. Je n'ai pas fait cette analyse comme ça, mais je me dis
a posteriori
que ça doit être intéressant !

J'ai plutôt petit à petit intégré les aspects du problème initial dans mon problème réduit. Je ne vais pas tout détailler, mais notamment si on regarde un peu plus en détail, le problème initial n'est pas non plus si continu (et donc pas si linéaire…) que ça, le score étant calculé différemment selon des paliers de valeurs pour les ampoules (entre 0 et 1, entre 1 et 2 puis entre 2 et l'au-delà). En fait on peut ruser un peu pour encoder ce genre de notions dans le programme linéaire : en MathProg, on peut forcer certaines variables à valoir soit 0 soit 1, par exemple avec var est_allume{a in ampoules}, binary;. Il faut toujours se rappeler que l'on a pas le droit d'utiliser des conditions ou des fonctions comme min ou max ou autre dans un programme linéaire, ou tout doit être… et bien linéaire ! On peut ruser comme je le disais : si vous maximisez la somme des est_allume[⋅], avec les contraintes est_allume[a] <= amp[a], lorsque amp[a] sera supérieure à 1 (donc l'ampoule allumée), et bien comme on cherche à ce que la somme des est_allume[⋅] soit maximale, on aura tout intérêt à mettre toutes les variables correspondant à des ampoules allumés à une valeur la plus grande possible, ici 1. En revanche lorsque l'ampoule est éteinte, c'est que amp[a] est inférieure strictement à 1, et donc est_allume[a] ne pourra pas prendre d'autre valeur que 0. En revanche abuser de telles valeurs booléennes tend à augmenter la complexité du problème, pour les raisons décrites plus tôt (le solveur doit encaisser les «sauts», ce qui revient globalement à énumérer des possibilités, même s'il est assez malin pour pouvoir faire ça assez vite dans pas mal de cas, il ne peut pas tout faire, en particulier pas résoudre des problèmes NP-complets plus vite que la musique ! ^^)

Le programme qui m'a permis d'atteindre la solution que j'ai soumise est le suivant (je ne l'ai pas trop nettoyé, donc il est peut-être pas très très lisible, mais bon, il reprend grosso modo les idées décrites plus tôt), avec quelques trucs hardcodés parce-que sur le moment ça me semblait intéressant… sûrement… x)

Code: Tout sélectionner
set switches := (0 .. 29);

var s{k in switches};

set bulbs := (0 .. 251);

param b2s{i in bulbs, k in switches};

var b{i in bulbs};
var sig{i in bulbs}, binary;

var alpha{i in bulbs};

maximize score: sum{i in bulbs}sig[i] - sum{i in switches}alpha[i];#s[i];
    s.t. alp{i in bulbs}: alpha[i] >= 0;
    s.t. alpi{i in bulbs}: alpha[i] >= b[i]-1.66;
    s.t. foo{i in bulbs}: b[i] = sum{k in switches} b2s[i,k]*s[k];
    s.t. lit{i in bulbs}: b[i] >= sig[i];
    s.t. still{i in bulbs}: b[i] <= 1.9;
    s.t. rest{k in switches}: 0 <= s[k] <= 1;
solve;

printf 'aff = [';
printf '%.3f', s[0];
for {k in (1..29)}
    printf ', %.3f', s[k];
printf ']\n';

data;

param b2s: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 :=
    0 1 1 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
    1 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 1
    2 0 0 1 1 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 1
    3 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 0 1 0
    4 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0
    5 0 0 1 1 0 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 0 0
    6 0 0 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1
    …
    …
    …
    248 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 1 0
    249 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1
    250 0 0 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0
    251 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0;

end;


Le score 225,699 que l'on obtient n'est pas trop mal, et on l'obtient en quelques secondes, mais il faut savoir qu'il y a quelques soucis qui font que l'approche que j'ai développée jusque là ne permettrait pas je pense de faire bien mieux. Déjà le côté continu des potentiomètres est en fait discutable puisque, notamment pour les raisons qu'a bien et gentiment décrites Critor plus tôt, ceux-ci prennent en fait leurs valeurs dans une plage de 94 valeurs possibles, ça peut sembler suffisant pour approximer du continu, mais cela adjoint aux paliers pose un soucis : globalement on va essayer de faire coller les valeurs des ampoules le plus possibles à la valeur 1.0, le truc c'est que lorsqu'on ajoute des arrondis, et bien on peut avoir tendance à passer très légèrement en dessous de 1.0, et même si c'est peu, c'est suffisant pour changer de palier (l'ampoule n'est plus allumée, et donc le calcul du score erroné). Si on voulait tout de même tout encoder on s'approcherait de plus en plus de la résolution d'un problème vraiment NP-Complet, encodé dans un programme linéaire, et donc un truc qui prend beaucoup trop de temps, en tout cas on ne gagne pas grand chose à passer par un solveur linéaire.

Je me suis amusé à lancer une version plus précise sur une grosse machine pendant un week-end, pas grand chose n'a eu le temps d'en sortir, sinon de la RAM occupée…

Comment ça je squatte la RAM du serveur ? :E


Enfin voilà, sans tous les petits détails, c'était globalement mon approche, je suis curieux de voir ce qu'on pu faire les autres, surtout que le score optimal semble être bien approché (puisqu'on a deux soumissions à 227,647 par deux personnes différentes)… ^^

https://www.planet-casio.com/Fr/forums/topic15371-2-Triconcours-et-l-epreuve-de-force.html#159282


en
4ème
n'arrive qu'à 245 lampes allumées, mais de façon bien plus économique à
225,9
points.

@Ruadh, dis-nous tout ! ;)

Ruadh a écrit:En lisant le programme, j'ai compris que chaque potentiomètre pouvait avoir 94 valeurs distinctes, qui sont les entiers de 0 à 93 divisés par 93. J'ai donc utilisé les nombres entiers par la suite. J'ai ensuite cherché quel est l'entier qui permettait d'avoir le meilleur score si tous les potentiomètres avaient la même valeur, il s'agissait de 8. J'ai utilisé un programme qui modifiait légèrement les valeurs de chaque potentiomètre autour de cette valeur et j'ai finalement réalisé un score de plus de 218.
Voyant que je ne parviendrai pas à monter plus haut avec cette méthode, j'ai utilisé un algorithme génétique assez basique. J'ai supposé que les potentiomètres ne pouvaient pas avoir une valeur supérieure à 20, en effet, les ampoules ont tendance à griller au-delà. Cela a permis à mon algorithme de converger très rapidement vers mon dernier score de presque 226.


/ achève
3ème
avec un éclairage à 245 lampes avec encore moins de pertes énergétiques et se voit récompensé de
226,3
points.

@Neo, nous avons hâte de lire tes explications ! ;)

NeOtuX a écrit:Pour ma part j'ai eu la même approche que Hackcell : les Algorithmes Génétiques. Je n'y connais pas grand chose dans ce domaine, puisque je n'en avais jusqu'alors jamais développé (J'en avais juste parlé lors d'un pitch pour une application qui devait faire de la réalité augmentée). De ce que j'en avais compris les AG permettent de trouver 'une' solution pas trop mauvaise (mais pas LA solution, à moins d'avoir de la chance) en un temps raisonnable. Ce qui m'a lancé c'est le fait que le nombre d'entrées et de sorties était connu et lui aussi raisonnable.

Bref j'ai lu la page Wikipédia et... c'est tout. J'ai pondu un code, je ne sais pas trop ce que ça vaut. J'avoue que la partie qui chamboule la population si l'algorithme est bloqué dans un maximum local est du pur bricolage. Si quelqu'un connait une méthode robuste pour gérer ça je suis preneur. J'ai vu sur la page Wikipédia qu'il était question du recuit simulé en alternative, mais je ne connais pas du tout : ce sera l'occasion d'apprendre une prochaine fois !

A toute fin utile je vous mets mon code en Python en PJ. Je prends toutes vos remarques si vous en avez, comme je disais je suis néo(tux)phyte.

Fichier joint
:
https://www.planet-casio.com/files/forums/AG_Potars-159484.py


avait au départ envoyé une participation à
227,7
points, mais pas de chance puisque quelqu'un d'autre avait déjà soumis exactement la même configuration.

Il se rabat donc sur une configuration de 247 lampes à
227,6
points qui lui fait décrocher la
2nde
place.

@Jacobly, how did you manage to achieve such a high score ? ;)

Jacobly a écrit:I just used the same simulated annealing program that I had used for Galaktik, but between the search space being discrete and therefore minuscule in comparison, and the maximization function being much more well-behaved, I had the global maximum within 6 hours of finding out about the contest. In the end, I had a ~140 line program that can find the best score with no starting information in under 4 minutes with a maybe a 5-10% probability. The only thing of note that I did was I scaled the score function so that it could be computed using only integer math which meant that I didn't have to worry about floating point error.


Et voici donc en
1ère
place la fameuse configuration avec 247 lampes à
227,7
points, découverte par / .

@Pavel, éclaire-nous de tes lumières ! ;)

Pavel a écrit:Je vais essayer d'expliquer comment j'ai obtenu 227,647 points.

J'ai commencé par légèrement simplifier le code. J'ai modifié la fonction pot() pour qu'elle marche avec les valeurs entières de 0 à 93 et j'ai ajouté une fonction (score()) pour calculer les points. Voici un lien vers le code après ces modifications.

En jouant avec ce code, j'ai remarqué deux comportements de ce problème potentiellement utiles pour trouver une solution:

  1. En tournant les potentiomètres un par un de 0 à 93, il est possible de trouver quelque chose qui ressemble à un maximum local:

    Code: Tout sélectionner
    for j in range(30):
      pot(j, 8 + j % 2)

    print(score())

    while True:
      smax = score()
      kmax = -1
      vmax = -1
      for k in range(30):
        backup = ls[k]
        for v in range(94):
          pot(k, v)
          s = score()
          if smax < s:
            smax = s
            kmax = k
            vmax = v
        pot(k, backup)
      if kmax >= 0:
        pot(kmax, vmax)
        print(smax)
      else:
        break

  2. Pour sortir d'un maximum local, il suffit de tourner juste un tout petit peu quelques potentiomètres:

    Code: Tout sélectionner
    for k in range(30):
      v = ls[k] + mrandint(-1, 1)
      if v < 0: v = 0
      if v > 93: v = 93
      pot(k, v)

Ensuite, j'ai fait un peu de lecture sur des méthodes d'optimisation stochastiques et j'ai essayé quelques méthodes de ce livre.

Le recuit simulé a donné les meilleurs résultats en moins de temps par rapport aux autres méthodes.

Enfin, voici un lien vers le code en C qui converge à la solution en quelques heures.

https://www.planet-casio.com/Fr/forums/topic15371-2-Triconcours-et-l-epreuve-de-force.html#159391


Référence
:
https://www.planet-casio.com/Fr/forums/ ... 471&page=1
Lien vers le sujet sur le forum: Triconcours de rentrée 2018 - résultats défi de Force (Commentaires: 29)

Don de calculatrices par darthvader

Nouveau messagede critor » 15 Nov 2018, 22:58

Crois-le ou pas, malgré la travail colossal que nous abattons chaque année, il est extrêmement rare que des membres nous proposent leurs calculatrices fonctionnelles une fois qu'ils n'en ont plus besoin. Et pourtant, même de simples modèles d'entrée de gamme nous feraient très plaisir, car bien pratiques pour divers tests et développements.

Il y a eu qui avait donné deux
TI-81
en 2009 soit avant le renommage de la communauté en
TI-Planet
, calculatrices qui avaient l'avantage de disposer de versions ROM non dumpées à l'époque, ce que nous nous sommes empressés de faire.
Puis il y a eu qui avait donné une
Casio fx-85GT PLUS
en 2016.

10023Nous sommes donc aujourd'hui transposés de joie à la réception d'un don de , et pas des moindres : :~o
  • sa
    TI-Nspire CX CAS
    en révision matérielle
    C
    :D
    fait donc partie des versions les plus sympas pour les bricoleurs
  • sa
    TI-84 Plus CE-T
    en révision matérielle
    C
    :bj:
    modèle très rare en France et qu'ils nous a ici ramené d'Allemagne; le modèle qui remplace notre
    TI-83 Premium CE
    française chez nos voisins européens, mais en nettement plus cher et sans le calcul exact
Données pour aider, je cite, aux
"cadeaux de concours"
. ;)

Merci donc ; la communauté
TI-Planet
éternellement reconnaissante. :favorite:
Lien vers le sujet sur le forum: Don de calculatrices par darthvader (Commentaires: 2)

Educatec/tice 2018 Paris: rencontre Casio et A4 Technologie

Nouveau messagede critor » 14 Nov 2018, 18:33

Tu as raté l'occasion ces dernières semaines d'aller voir
Casio
,
Hewlett Packard
,
NumWorks
et
Texas Instruments
aux journées
APMEP
ou au congrès
UdPPC
à Bordeaux ?

Et bien bonne nouvelle, ultime chance de l'année la semaine prochaine avec le salon
Educatec-Educatice
à
Paris Porte de Versailles
, les
mercredi 21
et
jeudi 22
de 9h à 18h, et le
vendredi 23
de 9h à 17h.

9384Tu pourras y rencontrer
Casio
et découvrir ou redécouvrir sa solution
Python
pour
Graph 90+E
.

Hewlett Packard
sera certes également présent, mais à la différence sans sa branche
HP Calculatrices
selon la description des exposants sur le site de l'événement.


Par contre tu pourras faire un tour chez
A4 Technologie
qui distribue l'ensemble de la gamme
TI-Innovator
, et conçoit en prime des accessoires dédiés.
A quand un pilotage du robot
TI-Innovator Rover
en
Python
?... ;)



Source
:
http://www.educatec-educatice.com
Lien vers le sujet sur le forum: Educatec/tice 2018 Paris: rencontre Casio et A4 Technologie (Commentaires: 8)

Triconcours de rentrée 2018 - résultats défi de Sagesse

Nouveau messagede critor » 10 Nov 2018, 13:24

9798Voici les résultats du défi de Sagesse de notre Triconcours de rentrée 2018. Vous avez été pas moins de 16 à produire 94 participations.

Il s'agissait de faire pousser des fleurs sur
Casio fx-92+ Spéciale Collège
en s'inspirant de la version ci-contre mal optimisée.

Commençons par les mentions honorables hors classement :

sur
fx-92+ Spéciale Collège
avait commencé un travail intéressant en décentrant la tige et juxtaposant toutes les feuilles d'un même côté pour augmenter leur taille.


encore sur
fx-92+ Spéciale Collège
avaient pour sa part eu la jolie idée de mettre plusieurs fleurs avec des feuilles généreuses, une création prometteuse qui s'éloignait de l'exemple proposé pour démarrer.


toujours sur
fx-92+ Spéciale Collège
avait quant à lui tenté de changer à la fois les formes des pétales et des feuilles, et exploitait ainsi toute la surface de l'écran.


sur
Scratch
nous invite en ce qui le concerne au voyage avec une fleur exotique en misant tout sur les pétales.


Voici maintenant le classement ! :)

à nouveau sur
fx-92+ Spéciale Collège
nous arrive
10ème
avec un intéressant changement de forme des feuilles évalué à
745
points. Assez peu ont tenté de dessiner des feuilles avec des contours identiques pour les imbriquer. :)
Auparavant il avait fait deux tentatives de changements de forme des pétales.


sur
fx-92+ Spéciale Collège
pointe
9ème
avec une jolie violette évaluée à
857.25
points. :)


sur
Scratch
termine
8ème
avec une version élégamment agrandie et aux pétales redisposés de la fleur d'origine, évaluée à
944
points. :)
Il avait dabord tenté un champ de fleurs ; quel bonheur pour les fourmis ! ;)


sur
fx-92+ Spéciale Collège
se classe
7ème
avec une autre version agrandie aux pétales redisposés de la fleur d'origine, évaluée à
977
points. :)
Il avait commencé par une forme de feuille différente et intéressante, avec une fleur asymétrique à tige recourbée, un motif unique dans ce concours !


sur
fx-92+ Spéciale Collège
se place
6ème
après avoir tenté une belle optimisation avec une forme identique pour les feuilles et pétales, évaluée à
1552
points. :D L'optimisation est toutefois limitée par le fait que la
fx-92+ Spéciale Collège
ne supporte que jusqu'à 3 niveaux d'imbrication d'instructions, empêchant ainsi de fusionner en pratique le code des deux tracés.
Avant cela il avait tenté d'orienter les feuilles perpendiculairement à la tige.


sur
fx-92+ Spéciale Collège
en
5ème
, arrive pour le coup à fusionner les codes de tracé des pétales et feuilles, pour
1787.25
points. :D Pour cela il a simplifié la forme utilisée, permettant ainsi d'économiser l'imbrication de boucle manquante.
Avant il avait lui aussi tenté des feuilles perpendiculaires à la tige.


Et maintenant les grands gagnants :
sur
fx-92+ Spéciale Collège
, arrive
4ème
après avoir tenté lui aussi une forme identique pour les feuilles et pétales, évaluée à
1791.75
points. :D Notons une belle astuce d'optimisation en supprimant dans l'adresse qu'il nous a communiquée le F901F903
(nouvelle ligne vide)
automatiquement inséré par la calculatrice en fin de script.
Il avait lui aussi tenté de façon similaire deux autres formes.
Il avait également tenté une super-fleur aux pétales très généreux.


, s'aidant de sa
fx-92+ Spéciale Collège
, arrive
3ème
avec une fleur exotique réussie à
2335.5
points. :bj: Notons là encore l'optimisation par suppression du F901F903 final.
Avant cela il avait tenté une autre fleur exotique ainsi que là encore une version asymétrique de la fleur d'origine.
Juste avant il avait fait deux tentatives en prenant la séparation d'avec la zone d'entrées/sorties textuelles comme support de la tige, pemettant ainsi aux feuilles de pousser sur toute la hauteur de l'écran. Mais c'est alors plus embêtant pour caser les pétales.
Ses participations précédentes proposaient des feuilles imbriquables qui minimisent l'espace perdu entre les feuilles consécutives.


ou sur
fx-92+ Spéciale Collège
, arrive
2nd
avec son , une superbe création à
2579.5
points ! :#tritop#:
Mais avant d'y parvenir, il nous avait emmener visiter tout un jardin botanique avec entre autres son et son .
Citons également son et son
Perce Neige au printemps pleinement sorti de terre
.


sur
fx-92+ Spéciale Collège
arrive
1er
avec une super-fleur dans le genre chardon cette fois réussie à
2744
points. :#tritop#:
Il avait au préalable tenté deux autres super-fleurs, possiblement plus jolies mais aussi plus régulières.
Avant cela il avait fait deux
tentatives en changeant la forme des pétales puis des feuilles.
Notons également sa tentative remarquable avec des feuilles alternes.

Merci à pour la corédaction de cette annonce et merci à tous pour votre intérêt et vos efforts; on se retrouve en commentaires pour le choix des lots; et à bientôt pour les résultats des deux autres défis. :)


Référence
:
https://www.planet-casio.com/Fr/forums/ ... 455&page=1
Lien vers le sujet sur le forum: Triconcours de rentrée 2018 - résultats défi de Sagesse (Commentaires: 38)

Modulation FM avec la carte TI Analog System Labkit Pro

Nouveau messagede Wistaro » 06 Nov 2018, 19:01

(version en anglais)

7633Nous vous parlions il y a quelques mois de la carte
Texas Instruments
nommée
Analog System Labkit Pro
.

Cette carte est un kit
pédagogique
, à destination des filières axées sur
électronique
comme les lycées, les IUT
(Institut Universitaire de Technologie)
... Elle comprend un certain nombre de
circuits à réaliser
, directement sur la carte avec des
connexions filaires
type "Arduino"
, pour
se familiariser
ou
approfondir ses connaissances
dans le domaine de
l'électronique analogique
. Très simple à utiliser, il n'est pas nécessaire d'avoir des
connaissances poussées
en électronique pour réaliser les premières expériences. Néanmoins, si vous avez de bonnes notions et que vous voulez allez plus loin, les possibilités de cet
Analog System Labkit
sont nombreuses et vous permettront de sortir des expériences détaillées pour créer les vôtres.

Récemment, j'ai pu acquérir cette
excellente carte
et m’entraîner un peu dessus. Vous le savez peut-être, je suis passionné par l'électronique et j'étudie dans ce domaine. J'ai déjà réalisé plusieurs articles sur une carte DSP de chez
Texas Instruments
, que vous pouvez regarder en cliquant ici si vous êtes curieux!

En découvrant la carte
Analog System Labkit Pro
, j'ai immédiatement su que je pourrai faire des
circuits sympathiques
à présenter en article!

Aujourd'hui, je vais vous présenter un premier circuit que j'ai réalisé avec ce module.
Plus tard, suivront peut-être d'autres montages plus poussés combinant cette carte avec d'autres pour réaliser des fonctionnalités avancées :bj:

Je précise que le but de cette série d'articles n'est pas de faire un cours d'électronique, mais de donner des pistes de réflexion et attiser votre intérêt pour cette discipline fascinante et porteuse d'avenir qu'est l'électronique :p Je reste disponible en commentaire pour répondre à des détails plus techniques


Pour commencer, j'ai voulu partir d'un sujet que vous connaissez sûrement:
la modulation FM
. OK, ce nom ne vous dit peut-être pas grand chose, mais si je vous dit
"Radio FM"
, je suis sûr que vous voyez de quoi je parle!
Il s'agit tout simplement de la
radio
que vous pouvez capter de chez vous, avec
votre smartphone, votre radio...



FM signifie
"Modulation de fréquence"
(par opposition à "AM" pour "modulation d'amplitude", même s'il existe d'autres types de modulation)
.
Prenons un exemple très simple: un animateur radio va parler dans un micro. Un système, appelé
VCO
pour
Oscillateur Contrôlé en Tension
, va générer un
signal sinusoïdal dont la fréquence va varier en fonction de l'intensité de la voix de l'animateur
. Ce signal sera ensuite
amplifié
, et basculé en haute fréquence
(avec un mélangeur)
pour permettre son émission.
Le terme de
modulation en fréquence
prend alors tous son sens!

Ensuite, ce que fait votre récepteur radio, il se contente de
lire le signal modulé en fréquence
, et de récupérer le signal qui se cache derrière avec un circuit
assez simple
.
J'ai déjà réalisé un émetteur/récepteur FM, si le sujet vous intéresse, je pourrai le développer dans un prochain article.


La question qui nous intéresse ici, c'est comment fonctionne ce fameux VCO?

Généralement, on n'utilise pas le VCO seul, il est toujours accompagné d'un
système
autour permettant de
stabiliser la fréquence centrale
et de conserver la fréquence souhaitée à l'aide de l'un des circuits suivants:
  • Avec une
    PLL
    , ou Boucle à Verrouillage de Phase. C'est le plus utilisé, mais le plus complexe à traiter. Il existe plusieurs sorte de PLL, nous traiterons ici du cas le plus simple;
  • Avec un
    quartz
    . C'est très précis et durable, mais encombrant
    (impossible à miniaturiser sur les cartes)
    .

OK, maintenant que vous savez de quoi je parle, comment réaliser un VCO concrètement, et plus particulièrement sur la carte
Analog System Labkit Pro
de chez
Texas Instruments
?

Sur notre kit, nous avons à notre disposition:
  • des amplificateurs opérationnels
    (AOP)
    ;
  • un régulateur linéaire de tension;
  • des potentiomètres;
  • des multiplicateurs analogiques;
  • et des convertisseurs analogique-digital.

Pour réaliser notre
premier VCO
, nous allons simplement utiliser des
amplificateurs opérationnels
et un
potentiomètre
.

Notez qu'il est parfaitement possible de réaliser un VCO à l'aide d'autres composants
(comme des transistors)
, comme sur ce schéma-là, que j'ai utilisé dans un autre projet:
Image



  • En entrée
    , nous aurons
    une tension continue
    ,
    le signal modulant de notre VCO
    . Plus cette tension sera
    élevée
    , plus la
    fréquence
    en sortie sera
    élevée
    . A l'inverse, plus la tension sera
    basse
    , plus le signal sera en
    basse fréquence
    . J'ai choisi de prendre une tension continue par simplicité, mais remplacez cette tension par le signal d'un micro-phone, et le résultat sera le même, après amplification.
    Cette tension sera modifiable à l'aide d'un potentiomètre.
  • En sortie
    , il y aura un haut-parleur qui permettra d'entendre
    le signal modulé en fréquence
    . Plus le son sera aiguë, plus la fréquence sera haute.

Nous utiliserons 2 AOP, de référence TL082, mis en cascade. Les AOP sont une sorte de composant magique, permettant d'amplifier un signal, de créer des fonctions mathématiques
(si, si!)
, de faire du filtrage...Ils sont simples à utiliser et très pratiques en électronique malgré hélas, leurs nombreux défauts
(en particulier en haute fréquence!)
.

Voici à quoi ils servirons ici:

  • Le
    premier AOP
    servira à générer un signal carré,
    tout ou rien
    (0 ou 1)
    , modulé en fréquence. On appelle cet circuit un
    trigger de Schmitt
    ;
  • Le second AOP
    , monté en
    intégrateur
    , servira à générer un
    signal triangulaire
    modulé en fréquence.
  • On utilisera un multiplicateur analogique pour combiner les deux et créer un VCO dit "linéaire" en rebouclant le système.

Les différents composants ont été calculés pour pouvoir générer une fréquence audible, entre
50Hz et 2kHz
.
De plus, brancher le haut-parleur, d'un impédance de 8 Ohms, n'aura quasiment aucune incidence sur le montage, l'impédance de sortie des AOP étant très faible. Néanmoins, pour parfaire le circuit, il aurait fallu ajouter un circuit suiveur entre le VCO et le haut-parleur.


La carte
Analog System Labkit Pro
sera alimentée par 2 générateurs de laboratoire, permettant de générer 2 tensions continues stables. Il faut en effet générer du
+10V et du -10V
.
Il est possible d'utiliser une
seule alimentation
et de réaliser un circuit permettant de symétriser la tension en +/-10V avec une seule alimentation, mais cette solution n'est pas terrible. C'est la solution que j'avais réalisé au début, mais la tension n'est pas stable. Je suis donc parti sur
2 alimentations
.


Voici ce que donne le montage terminé sur la carte
Analog System Labkit Pro
:

9891 9892 9890
(cliquez sur les images pour les agrandir)


Maintenant, écoutons le doux signal généré par ce circuit. Sur la vidéo qui suit, je modifie la fréquence du signal en changeant la valeur de la tension de modulation à l'aide du potentiomètre. Le son généré est assez particulier
(voire très étrange :p)
, cela vient du signal généré, du haut-parleur, et de la vidéo qui déforme le son. On dirait un bruit de moteur, mais c'est bien le haut-parleur :p
L'essentiel est que le principe de la modulation fréquence fonctionne :)
Il serait possible d'améliorer le signal en mettant un filtre.
:'( Seul petit bémol: n'ayant malheureusement pas
(encore? )
d'oscilloscope
disponible chez moi pour le moment, je ne peux malheureusement pas voir la forme du signal!



Et voilà, les VCO et la modulation en fréquence n'ont plus de secrets pour vous :p ! Je précise aussi que le VCO n'est pas seulement utilisé dans la modulation en fréquence. Vous le retrouvez dans les convertisseurs analogique-digital type Sigma-Delta ou dans les amplificateurs de classe D.

J'espère que cet article vous a plus, n'hésitez pas à me donner votre avis ou à poser vos questions :)

Merci à Texas Instruments et critor pour la carte!
(read in french)

7633 A few months ago, we talked about the Texas Instruments' Analog System Labkit Pro in this news article.

This bord is an educational
kit
, dedicated to schools oriented electronics. It includes a huge number of
circuits that you can make
, directly on the board with
wired connections
like on "Arduino"
, to
get familiarized or deepen your knowledge
in the field of
analog electronics
. Very simple to use, you don't have to have
advanced knowledge
in electronics to perform the first experiments. Nevertheless, if you have ideas and want to go further, the possibilities of this
Analog System Labkit
are numerous and will allow you to go out of detailed experiences to create your own.

Recently, I acquired this
excellent card
and train a bit on it. As you may know, I am passionate about electronics and I study in this field. I already made several articles on a DSP card from
Texas Instruments
, which you can watch by clicking here if you are curious!

Today, I will present the first circuit that I realized with this board.
Later, may follow other more advanced montages combining this board with others to achieve advanced features: bj:

I want to point out that the purpose of this series of articles is not to do an electronics course, but to stir your interest in this fascinating and future-oriented discipline : p I stay available in comment section to answer more technical details


To begin, I wanted to start with a subject that you probably know:
the FM modulation
. OK, this name may not tell you much, but if I tell you
"FM Radio"
, I'm sure you see what I'm talking about!
This is simply the
radio
that you can listen at home, with
your smartphone, your radio ...



FM means
"Frequency modulation"
(opposed to "AM" for "amplitude modulation", even if there are other types of modulation)
.
Let's take a very simple example: a radio host will speak in a microphone. A system, called
VCO
for
Voltage Controlled Oscillator
, will generate a
sinusoidal signal whose frequency will vary according to the intensity of the voice of the host
. This signal will then be
amplified
, and switched to high frequency
(with a mixer)
to allow its transmission.
The term of
frequency modulation
then makes sense!

Then, what your radio receiver does, it just
read the frequency modulated signal
, and retrieve the signal behind it with a fairly simple circuit.
I have already made a FM transmitter / receiver, if the subject interests you, I can develop it in a future article.


The question that interests us here, is how does this famous VCO work?

Generally, we don't use a VCO alone, it's always accompanied by a
system
to stabilize the central frequency [/b] and to keep the desired frequency using from one of the following circuits:
  • With a
    PLL
    , or Phase Lock Loop. It's the most used, but the most complex to treat. There are several types of PLL, we will deal here with the simplest case;
  • With a
    quartz
    . It's very accurate and durable, but cumbersome
    (impossible to miniaturize on maps)
    .

OK, now that you know what I'm talking about, how to realize a VCO concretely, and more specifically on the board
Analog System Labkit Pro
from
Texas Instruments
?

On our kit, we have at our disposal:
  • operational amplifiers
    (AOP)
    ;
  • a linear voltage regulator;
  • potentiometers;
  • analog multipliers;
  • and analog-to-digital converters.

To realize our
first VCO
, we will simply use
operational amplifiers
and
potentiometers
.

Note that it's perfectly possible to realize a VCO using other components
(like transistors)
, as on this diagram, which I used in another project at school:
Image



  • In input
    , we will have
    a DC voltage
    ,
    the modulating signal of our VCO
    . The higher this voltage is, the higher the
    frequency
    output
    high
    . On the other hand, the lower the voltage is, the lower the signal will be
    low frequency
    . I chose to take a continuous voltage for simplicity's sake, but replace this voltage by the signal of a microphone, and the result will be the same, after amplification.
    This voltage will be modifiable using a potentiometer.
  • At the output
    , there will be a loudspeaker allowing us to hear
    the frequency modulated signal
    . The higher the sound, the higher the frequency.

We will use 2 AOP, reference TL082, cascaded. AOPs are a kind of magic component, to amplify a signal, to create mathematical functions
(yes, of course!)
, to build filters ... They are simple to use and very practical in electronic, although they have many defects
(especially in high frequency!) [/​​i].

Here's what they will serve here:

  • The first
    AOP
    will be used to generate a square signal,
    all or nothing
    [i] (0 or 1)
, frequency modulated. This circuit is called a
Schmitt trigger
;
  • The second AOP
    , mounted in
    integrator
    , will be used to generate a
    frequency modulated triangular signal
    .
  • An analog multiplier will be used to combine the two and create a so-called "linear" VCO by looping the system back.

  • The different components were calculated to be able to generate an audible frequency, between
    50Hz and 2kHz
    .
    In addition, connecting the speaker, with an impedance of 8 Ohms, will have almost no impact on global circuit, the output impedance of the AOP is very low. Nevertheless, to perfect the circuit, it would have been necessary to add a follower circuit between the VCO and the loudspeaker.


    The
    Analog System Labkit Pro
    board will be powered by 2 laboratory generators, allowing 2 stable DC voltages to be generated. It's necessary to generate
    + 10V and -10V
    .

    Here are pictures of the complete circuit:

    9891 9892 9890
    (click on images to enlarge them)


    Now, let's listen to the sweet signal generated by this circuit. On the following video, I change the signal frequency by changing the value of the modulation voltage using the potentiometer. The generated sound is quite special
    (even very strange: p)
    , it comes from the generated signal, the speaker, and the video that distorts the sound. Sounds like a motor sound, but it's the speaker: p
    But the most important is that the principle of frequency modulation works :)
    It would be possible to improve the signal by putting a filter.
    (Only small problem: unfortunately I don't have any oscilloscope at home for the moment, I can unfortunately not see the shape of the signal !




    Now, VCO and frequency modulation have no secrets for you: p! I also specify that the VCO is not only used in frequency modulation. You find it in analog-to-digital converters type Sigma-Delta or in Class D amplifiers.

    I hope this article Interested you, feel free to give me your opinion or to ask your questions :)

    Thanks to Texas Instruments and critor for the kit!
    Lien vers le sujet sur le forum: Modulation FM avec la carte TI Analog System Labkit Pro (Commentaires: 2)

    Retours Udppc 2018 à Bordeaux avec Casio et TI

    Nouveau messagede critor » 05 Nov 2018, 17:35

    9868La semaine dernière c'était donc le 66ème congrès de l'
    UdPPC
    U
    nion
    d
    des
    P
    rofesseurs de
    P
    hysique et
    C
    himie)
    à l'
    ENSEIRB-MATMECA
    de
    Bordeaux
    .

    Les stands des constructeurs de calculatrices graphiques
    Casio
    et
    Texas Instruments
    ont reçu énormément d'attention le matin, peut-être paradoxalement plus qu'aux journées
    APMEP
    la semaine d'avant et même plus que les stands voisins pourtant davantage orientés sciences expérimentales. Et en effet ce n'est pas pour rien, dans les nouveaux programmes de rentrée 2019 les professeurs de
    Physique-Chimie
    sont censés enseigner le
    Python
    avec :
    • des tracés en
      Seconde Générale et Technologique
      (diagrammes en nuages de points, trajectoire plane d'un objet ponctuel, vecteurs...)
    • puis comme en
      Maths
      des fonctions de calcul appliquées aux divers chapitres en
      Première Générale Spécialité Physique-Chimie
    Nombreux étaient donc les enseignants à être préoccupés voir même effrayés, et les autres stands ne traitaient justement pas du
    Python
    .

    98759877
    Texas Instruments
    une fois de plus présentait son module d'extension externe
    TI-Python
    pour
    TI-83 Premium CE
    , comme tu peux le voir ci-contre sur la table devant Charlotte.

    L'appareil n'offre toutefois pour le moment que deux modules
    Python
    ,
    math
    et
    random
    . Il n'y a donc à ce jour aucune possibilité de tracé graphique en langage
    Python
    . :'(


    9879
    Casio
    tenait donc également un stand, et y présentait sa solution
    Python
    intégrée à la
    Graph 90+E
    , actuellement
    MicroPython 1.9.4
    .

    De même ici, les deux seuls modules
    Python
    proposés sont
    math
    et
    random
    ; il n'y a donc ici non plus pas de possibilités graphiques dans ce langage.


    Afin de ne pas laisser ce nouveau marché à la seule calculatrice
    NumWorks
    avec son module
    Python
    graphique
    kandinsky
    , calculatrice d'ailleurs absente de cet événement de façon fort regrettable dans le contexte particulier de cette année, il nous semblerait urgent pour ces deux constructeurs d'annoncer un module
    Python
    graphique aussi tôt que possible d'ici la rentrée 2019.


    988198809885Aussi chose exceptionnelle, pour la première fois sur un événement français à notre connaissance, était présentée sur le stand de
    Casio
    l'interface d'acquisition de mesures physiques par le néerlandais
    CMA
    , interface pilotable depuis l'application intégrée
    E-CON2
    (
    Graph 35+E
    )
    ,
    E-CON3
    (
    Graph 75+E
    )
    ou
    E-CON4
    (
    Graph 90+E
    )
    ! :bj:

    Ci-contre, vous avez l'affichage de la valeur renvoyée par un capteur de température, ainsi qu'un diagramme l'utilisant.

    988798839882L'interface permet bien d'autres choses, dans sa boîte était également inclus un capteur de tension.

    Ces capteurs utilisent apparemment des prises téléphoniques
    BTA
    (
    B
    ritish
    T
    elecom
    A
    nalogic)
    , comme les capteurs
    Vernier
    historiques pou la solution concurrente chez
    Texas Instruments
    . A se demander si il n'y aurait pas compatibilité... ;)

    L'interface se connecte à la calculatrice directement avec le câble série
    mini-Jack 2.5
    s'alimente sur son port mini-USB qui peut-être permet d'autres choses si utilisé avec un ordinateur... ;)
    Lien vers le sujet sur le forum: Retours Udppc 2018 à Bordeaux avec Casio et TI (Commentaires: 0)

    Programmes Maths-Sciences 2019 : double révolution + Python

    Nouveau messagede critor » 03 Nov 2018, 17:23

    La réforme du baccalauréat et du lycée (voies générale et technologique) annoncée le 14 février 2018 par le ministre de l’Éducation nationale appelle l’élaboration de nouveaux programmes.

    Plusieurs projets de programmes sont déjà consultables publiquement :
    • en Seconde
    • en Première et applicables dès la rentrée 2019 dans l'optique du nouveau BAC 2021

    En
    Mathématiques
    nous avons les les projets de programmes :
    En
    Seconde Générale et Technologique
    , le programme de
    Mathématiques
    réaffirme les 6 compétences puis se découpe en 6 parties :
    1. Nombres et calculs
    2. Géométrie
    3. Fonctions
    4. Statistique et probabilités
    5. Algorithmique et programmation
    6. Vocabulaire ensembliste et logique
    La dernière partie
    Vocabulaire ensembliste et logique
    ne doit pas faire l'objet de séquences spécifiques mais être traitée de façon transversale, dans le contexte des différentes autres parties du programme.
    Nous y notons l'ajout de la notion d'équivalence, le mythique
    "si et seulement si"
    .

    La nouvelle première partie
    Nombres et calculs
    annonce le retour des ensembles de nombres et de leur formalisme
    (décimaux, rationnels, irrationnels, réels...)
    disparus à la rentrée 2009, ainsi que des intervalles.
    Nous y notons également la notation valeur absolue qui descend du programme de Première S.

    En partie
    Géométrie
    nous déplorons la disparition de la géométrie dans l'espace, une des rares occasions de sortir les élèves de leur monde en 2D.

    En partie
    Fonctions
    nous notons l'arrivée des suites numériques des programmes de Première qui ne disent pas encore leur nom.

    En partie
    Algorithmique et programmation
    , nous devions jusqu'à présent choisir un
    "langage interprété, concis, largement répandu et pouvant fonctionner dans une diversité d’environnements"
    , une définition que nous soupçonnions d'être taillée sur mesures pour le langage
    Python
    . Si officiellement on avait encore le choix, en pratique les formations derrière mettaient toutes en avant le seul langage
    Python
    , et d'autres choix pouvant parfaitement répondre à ces consignes y ont même parfois été vivement dénigrés.
    Cette fois-ci on tombe les masques, le
    Python
    est désormais imposé.
    Y sont abordés :
    • de façon cohérente avec la première partie le typage des variables
      (entiers, flottants, chaînes...)
    • et 4 instructions : l'affectation, l'instruction conditionnelle
      (si/alors/sinon)
      , la boucle bornée
      (pour)
      et la boucle non bornée
      (tant que)

    Notons que des exemples d'algorithmes sont cités dans les diverses parties du programme; il faudra donc envisager une sorte de progression en spirale.

    Les différentes parties citent également divers démonstrations à aborder.



    Un programme ambitieux avec du formalisme, de la démonstration et de la rigueur, peut-être la première réforme depuis longtemps qui ne baisse pas le niveau du programme.

    Toutefois, revers de la médaille, on peut s'interroger sur la capacité des élèves sortant du collège à suivre un tel programme.
    Nombre d'entre eux pourraient être découragés de poursuivre les Mathématiques en Première Générale, deux années de moins en série générale qui feront pas mal de différence dans leur culture mathématique à la sortie du lycée.
    Et quant aux élèves qui ne voulaient pas mais que les familles forceront pour des raisons d'orientation à poursuivre avec les Mathématiques en Première Générale, la chose s'annonce douloureuse...

    En
    Seconde Technologique STHR
    , le programme de
    Mathématiques
    est allégé de la partie
    Nombres et calculs
    et comporte quelques spécificités, mais reste dans le même esprit.
    En
    Première Générale
    , le programme de
    Mathématiques
    se découpe là encore en 6 parties :
    1. Algèbre
    2. Analyse
    3. Géométrie
    4. Probabilités et Statistique
    5. Algorithmique et programmation
    6. Vocabulaire ensembliste et logique

    Il reprend les éléments communs aux anciens programmes de Première
    (suites numériques, dérivation, second degré)
    et d'autres spécifiques au programme de Première S
    (produit scalaire)
    .
    Pour les nouveautés on notera la fonction exponentielle qui descend de Terminale.

    En
    Algorithmique et programmation
    , objectif inédit au lycée : il s'agira enfin d'aller plus loin et de travailler sur les listes
    (génération, ajout/suppression d'élément, parcours...)
    .



    Un programme cette fois-ci assez similaire à l'ancien programme de Première S qui déjà n'était pas facile vu le fossé des exigences par rapport à la Seconde. Mais à la différence ici il n'y a plus de série scientifique, cela s'adresse à tous les élèves de série Générale, et c'est donc à nouveau quelque chose de particulièrement ambitieux.
    Si il s'agit de préparer les élèves aux défis scientifiques de demain, c'est sûrement excellent.

    Mais quid des élèves qui dans le contexte actuel auraient choisi la série ES, ou la série L avec spécialité Mathématiques ? Ils nous semblent là encore poussés à souffrir pour faire plaisir à leur famille, ou à abandonner complètement les Mathématiques. Et peut-être est-ce le message que ces nouveaux programmes souhaitent faire passer... de meilleures Mathématiques mais pour une élite, et plus rien pour les autres. Les Mathématiques ne sont plus une matière commune, et ne sont donc par extension plus une matière principale.


    En
    Physique-Chimie
    nous avons les projets de programmes :
    Nous ne nous y attarderons pas car ayant moins de choses intéressantes à raconter.

    Mais quand même une révolution : le professeurs de
    Physique-Chimie
    vont devoir eux aussi enseigner le
    Python
    , et ce dès la Seconde.
    Si en
    Mathématiques
    on programme des fonctions et donc par extension du calcul, en
    Physique-Chimie
    de Seconde on programme apparemment du dessin. Le langage
    Python
    y est cité pour :
    • représenter le mouvement plan d'un objet ponctuel
    • représenter un nuage de points
    • représenter des vecteurs vitesse et variation

    En
    Première
    il faudra en prime programmer en
    Python
    des fonctions permettant de :
    • déterminer l'état final d'un système chimique siège d'une réaction chimique
      (tableau d'avancement)
    • simuler et analyser le mouvement d'un système mécanique
    • étudier la relation entre somme des forces et variation du vecteur vitesse
    • simuler la propagation d'une onde périodique

    Problème, dans le contexte des épreuves écrites de CCF ou terminales en tous cas, seules les calculatrices
    NumWorks
    (module
    kandinsky
    )
    et
    HP Prime
    offrent l'accès à des fonctions graphiques en
    Python
    .
    La
    Casio Graph 90+E
    n'en a pas, et
    Texas Instruments
    n'a pas présenté mieux pour sa
    TI-83 Premium CE
    ces vacances à l'APMEP puis l'Udppc, mais nous en reparlerons.
    C'est quelque chose qu'il faudrait rajouter d'urgence d'ici la rentrée 2019.
    9875


    On peut même se demander si un module de dessin à la tortue/Scratch/Logo, ne serait pas également pertinent dans la continuité des programmes de collège. Cela simplifierait possiblement pas mal le tracé de vecteurs, qui sans cela sera un superbe problème de trigonométrie analytique...




    De façon générale la discipline semble remathématisée par des programmes à nouveau ambitieux. Quel intérêt en effet d'évaluer depuis 2012 par des études de documents, alors que nombres d'autres matières faisaient déjà travailler ces compétences ?...
    Il devient à nouveau possible en
    Physique-Chimie
    de donner un sens aux notions vues en
    Mathématiques
    l'année courante/précédente, et donc de préparer à nouveau un choix d'orientation éclairé en Physique ou Chimie pour l'enseignement supérieur.


    Notons que la programmation en langage
    Python
    figure également au projet de programme de l'enseignement de Spécialité de Sciences de l'Ingénieur en Première et Terminale.


    Source
    :
    http://www.education.gouv.fr/cid131841/ ... hnologique
    Lien vers le sujet sur le forum: Programmes Maths-Sciences 2019 : double révolution + Python (Commentaires: 3)

    [Concours] Rappel : bientôt la fin du TriConcours !

    Nouveau messagede Adriweb » 29 Oct 2018, 05:42

    Image

    97979796Pour cette rentrée,
    TI-Planet
    et se sont unis pour te proposer un concours de rentrée exceptionnel et inoubliable, le
    Triconcours
    de rentrée 2018
    . Tous les constructeurs de calculatrices graphiques conformes 2019 se sont associés à la démarche.

    Parmi les trois catégories, il reste encore le Défi de
    Courage
    , ouvert
    jusqu'au
    dimanche 4 novembre 2018
    au soir
    !
    Dépêche toi ! :D


    N'hésite pas a consulte le
    tableau des participations en live: https://tiplanet.org/triconcours.php


    Pour rappel, voici les superbes lots...
    Les 14 participants ayant réalisé les meilleurs scores distincts pourront choisir et personnaliser les lots suivants :
    • 2 lots
      Emeraude
      :
      1
      calculatrice
      Casio Graph 90+E
      + 1
      pack de goodies
      Casio
      + 1
      pack de goodies
      TI-Planète-Casio
    • 2 lots
      Jade
      :
      1
      sac
      Casio
      au choix + 1
      catalogue
      Casio
      au choix + 1
      pack de goodies
      Casio
      + 1
      pack de goodies
      TI-Planète-Casio

      96689667985698579858
    • 2 lots
      Onyx
      :
      1
      calculatrice
      HP Prime
      + 1
      pack de goodies
      HP
      + 1
      pack de goodies
      TI-Planète-Casio

      (calculatrice
      HP Prime
      génération
      G2
      , révision matérielle
      D
      )
    • 2 lots
      Hématite
      :
      1
      application
      HP Prime
      au choix + 1
      pack de goodies
      HP
      + 1
      pack de goodies
      TI-Planète-Casio

      (application
      HP Prime
      pour
      Android
      ,
      iPhone/iPad
      ou
      Windows
      )

      98339832
    • 2 lots
      Ambre
      :
      1
      calculatrice
      NumWorks
      + 1
      poster
      NumWorks
      au choix + 1
      pack de goodies
      NumWorks
      + 1
      pack de goodies
      TI-Planète-Casio

      Posters au choix :
      • format A0 (118,9×84,1cm²) :
        NumWorks
      • fomat A2 (42×59,4cm²) :
        NumWorks + Eduscol / Ministère de l'Education Nationale

      981598629814
    • Lot
      Turquoise
      :
      1
      calculatrice
      TI-Nspire CX CAS
      au choix + 1
      licence logciciel
      TI-Nspire CX CAS
      + 1
      transparent
      TI-89 Titanium
      + 1
      pochette CD
      TI-Nspire
      + 1
      pack de goodies
      TI
      + 1
      pack de goodies
      TI-Planète-Casio

      Calculatrices au choix :
      • TI-Nspire CX CAS
        sous emballage d'exposition A (rentrées 2012+ - probablement génération
        CR1
        , révision matérielle
        J-N
        , processeur
        132MHz
        , Boot1
        3.0.0
        , batterie Getac
        1060mAh
        )
      • TI-Nspire CX CAS
        sous emballage d'exposition C (rentrées 2015-2016 - probablement batterie Samsung
        1200mAh
        , hésitation sur le reste)
      • TI-Nspire CX CAS
        de timbre à date
        P-0916Y
        (génération
        CR6
        , révision matérielle
        Y
        , processeur
        156MHz
        , Boot1
        4.0.1
        , batterie Samsung
        1200mAh
        ) sous emballage d'expédition
      • TI-Nspire CX CAS
        de timbre à date
        P-0517AA
        (génération
        CR7
        , révision matérielle
        AA
        , processeur
        156MHz
        , Boot1
        4.0.1
        , batterie Samsung
        1200mAh
        ) sous emballage d'expédition
      • TI-Nspire CX CAS
        sous emballage d'exposition D (rentrée 2017 - probablement génération
        CR4+
        , révision matérielle
        W+
        , processeur
        156MHz
        , Boot1
        4.0.1
        , batterie Samsung
        1200mAh
        )
    • Lot
      Lapis
      :
      1
      calculatrice
      TI-83 Premium CE
      au choix + 1
      interface
      TI-Innovator Hub
      + 1
      robot
      TI-Innovator Rover
      + 1
      guide
      au choix + 1
      livre
      Eyrolles ICN 2nde/1ère
      + 1
      pack de goodies
      TI
      + 1
      pack de goodies
      TI-Planète-Casio
    • Lot
      Lazuli
      :
      1
      calculatrice
      TI-83 Premium CE
      au choix + 1
      interface
      TI-Innovator Hub
      + 1
      robot
      TI-Innovator Rover
      + 1
      guide
      au choix + 1
      livre
      Eyrolles Maths-Physiques BAC Pro
      + 1
      pack de goodies
      TI
      + 1
      pack de goodies
      TI-Planète-Casio
    • Lot
      Saphir
      :
      1
      calculatrice
      TI-83 Premium CE
      au choix + 1
      interface
      TI-Innovator Hub
      + 1
      guide
      au choix + 1
      livre
      Eyrolles ICN 2nde
      + 1
      dépliant mode examen
      TI-82 Advanced / 83 Premium CE
      + 1
      transparent
      TI-89 Titanium
      + 1
      pack de goodies
      TI
      + 1
      pack de goodies
      TI-Planète-Casio

      Calculatrices au choix :
      • TI-83 Premium CE
        blanche sous emballage d'exposition A (rentrée 2015 - probablement Boot Code
        5.0.0
        )
      • TI-83 Premium CE
        bleue sous emballage d'exposition B (rentrée 2016 - probablement Boot Code
        5.1.5
        )
      • TI-83 Premium CE
        blanche de timbre à date
        L-0717I
        (révision matérielle
        I
        , Boot Code
        5.1.5
        ) sous emballage d'expédition
    9845984698479848984398449849985098399840983898429841985198529652971496799678967796769674967598599600

    Détail des packs de goodies :
    • 1
      stylo
      Casio
      au choix
    • 1
      clé USB
      Casio
      au choix
      (clé
      Casio
      avec logo bleu foncé 8Go, clé
      Casio
      avec logo bleu non foncé 4Go, clé
      Casio fx-CP400+E
      4Go, clé
      Casio fx-92 Spéciale Collège
      4Go)
    • 1
      poster
      Casio
      au choix
      • format A2 (42×59,4cm²) : mode exmen
        Graph 25/35/90+E
      • format 39,8×59,8cm² : cap sur la programmation
        fx-92 Spéciale Collège
        et
        Graph 90+E
      • format 55,8×79,6cm² :
        fx-92+ Spéciale Collège
    963796389639964096419855
    • 1
      clé USB
      HP
      16Gio
    • 1
      stylo
      HP
    • 1
      bloc-notes
      HP
      49 feuilles lignées format A4
      (21×29,7cm²)
    883996569817
    • 1
      stylo
      NumWorks
    • 1
      casse-tête
      NumWorks
      avec pochette
    • 1
      sac
      NumWorks
    • 1
      dépliant
      NumWorks
    • 1
      guide
      NumWorks
    • sur demande spontanée uniquement, 1
      puce d'extension
      Flash
      au choix
      (
      Adesto AT25SF641-SUB-T 8Mio
      ou
      Winbond W25Q128JVSIQ 16Mio
      )
    9664965796699812986098619816
    • 1
      stylo
      TI
      au choix
    • 1
      clé USB
      TI
      au choix
      (clé
      TI
      rouge 1Go, clé
      T3 France
      bleue 2Go, clé
      TI-Nspire CX CAS
      2Go, clé petite
      TI-83 Premium CE
      2Go, clé grande
      TI-83 Premium CE
      4Go, clé petite
      TI-Primaire Plus
      4Go, clé grande
      TI-Primaire Plus
      4,2Go, clé
      TI-Innovator Rover
      4Go)
    • 1
      poster
      TI
      au choix
      • format ANSI-D (55,9×86,4cm²) :
        Mayim_Bialik
        de The Big Bang Theory,
        TI-10
        ,
        TI-30XS MultiView
        ,
        TI-73 Explorer
        ,
        TI-Nspire CAS TouchPad
        , recto-verso
        TI-Nspire TouchPad
        +
        TI-Nspire CX
        , recto-verso
        TI-Nspire CAS TouchPad
        +
        TI-Nspire CX CAS
      • format A1 (59,4×84,1cm²) : mode examen
        TI-83 Premium CE
        +
        TI-82 Advanced
        ,
        TI-89 Titanium
      • format 55,75×83,5cm² :
        TI-Collège Plus
        ,
        TI-Nspire CX
        ,
        TI-Nspire CX CAS
    • 1
      T-shirt ou polo
      TI
      au choix
      (T-shirt rouge "professional development
      T3 2014 Las Vegas
      " taille
      M
      ou
      L
      , T-shirt rouge "ask me I am a TIIC ambassador" taille
      L
      , polo noir "TI-University Program" taille
      XL
      )
    • 1
      sac ou sacoche
      TI
      au choix
    • 1
      porte-documents
      TI
      au choix
    • 1
      balle anti-stress
      TI
    878496519650964897198788878996439642964596449671967096739672972097229721
    8786
    • 1
      autocollant
      TI-Planet
    • 1
      compte premium
      TI-Planet
    • 1
      autocollant
      Planète Casio
    88088975
    Lien vers le sujet sur le forum: [Concours] Rappel : bientôt la fin du TriConcours ! (Commentaires: 0)

    -
    Rechercher
    -
    Sujets à la une
    Triconcours universel de la rentrée - 2000 euro de prix !
    "NumWorks++": Challenge de modification matérielle pour rajouter une puce de mémoire Flash !
    Offre TI-Planet/Jarrety pour avoir la TI-83 Premium CE avec son chargeur pour 79,79€ port inclus !
    Offre TI-Planet/Jarrety pour avoir la TI-Nspire CX CAS à seulement 130€ TTC port inclus!
    Jailbreake ta TI-Nspire avec Ndless et profite des meilleurs jeux et applications !
    Transforme ta TI-Nspire CX en console Game Boy Advance!
    123456
    -
    Donations/Premium
    Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
    PayPal : paiement en ligne sécurisé - secure online payments
    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 
    -
    Stats.
    282 utilisateurs:
    >246 invités
    >30 membres
    >6 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)