Calculatrices non standard

mardi 27 mai 2014
par  Alain BUSSER

Plusieurs exemples viennent de l’intégrale des jeux mathématiques du Monde, par Élisabeth Busser et Gilles Cohen, paru aux éditions Pôle (ISBN n° 978 284 884 0741). D’autres ont été donnés au Rallye Mathématique CM2-6e de l’IREM de Paris. La possibilité de manipuler une telle calculatrice, et pas seulement de l’imaginer, aide grandement à émettre des conjectures, et donne (du moins, on l’espère) l’envie de les valider...

Note : Bien que placés dans cette rubrique, ces fichiers ne sont pas programmés en CoffeeScript (sauf le dernier). Mais directement en JavaScript, dans l’espoir de mieux les voir fonctionner sous Android... Chaque copie d’écran d’un de ces fichiers est cliquable et permet d’ouvrir le fichier dans le navigateur (par exemple, clic droit puis « ouvrir dans un nouvel onglet »).

Remarque : Pour avoir une calculatrice cassée, il suffit de prendre une calculatrice entière et de la casser (enlever, modifier ou inactiver des touches par exemple).

Sujets du Rallye

Extrait du sujet du Rallye CM2-6e de 2000, exercice « avec ma calculette » :

HTML - 32.2 ko
Rallye CM2-6e 2000
la calculatrice cassée

Gestion du clavier de l’ordinateur

Ce fichier utilise une expression régulière pour voir si un calcul n’utilise que les touches de la calculatrice. Au début du source, on crée la RegExp avec

var     RE = /[^47\+\-=]/g;

La lettre « g » à la fin demande que la recherche soit globale (que la RegExp cherche tous les caractères illégaux, pas seulement le premier d’entre eux). Entre crochets, figure la liste des caractères autorisés (le « + » et le « - » sont « échappés » pour être compris comme des caractères), mais précédés d’un chapeau qui demande à la RegExp, non pas de chercher ces caractères, mais de lister les autres caractères (ceux qui ne sont pas sur la calculatrice cassée).

Pour savoir si un caractère non autorisé a été utilisé dans le calcul, on récupère le calcul (non effectué) et on effectue sur celui-ci une fouille au corps exhaustive à l’aide de la RegExp. Le résultat, noté v, est la liste des caractères non autorisés :

var v = calcul.match(RE);
if (v==null){
        discours = "";
} else {
        discours = "Mais les éléments suivants ont été utilisés, alors qu'ils ne sont pas disponibles sur la calculatrice : {"+v+"}.";
}

La variable discours, affichée en bas du fichier en rouge, contient alors l’ensemble des caractères non autorisés (ou rien si le calcul est « légal »).

Remarque : Selon le théorème de Bachet-Bezout, tout nombre entier peut être calculé à l’aide de cette calculatrice, parce que 4 et 7 sont premiers entre eux. Il est donc possible de décliner cet exercice en de nombreuses variantes, par exemple avec 5 et 3...

Ensuite, le sujet du rallye 2012 avec « Technologie » :

HTML - 31.7 ko
calculatrice cassée
encore une calculatrice abimée, et en plus il faut économiser les boutons pour ne pas agraver la situation

Sujets des jeux mathématiques du Monde

Calculatrice bizarre : Au lieu d’opérations sur deux nombres, elle n’a que deux fonctions unaires (qui transforment un nombre en un nombre).

  • le bouton

implémente la fonction affine x→2x+1 ;

  • le bouton

implémente la fonction qui est l’identité sur les nombres pairs et x→(x+5)/2 sur les nombres impairs.

HTML - 31.4 ko
une calculatrice bizarre
la calculatrice bizarre du Monde

Alors, en itérant ces deux fonctions, la calculatrice est un système dynamique, l’ensemble des fonctions engendrées par A et B (par composition) étant un semi-groupe dont on s’intéresse à une orbite.

Pour tricher

Le script suivant, testé dans alcoffeethmique, donne les premiers nombres qu’on peut obtenir avec ce système dynamique :

S = new Ensemble [0]
A = (x) -> 2*x+1
B = (x) ->
    if x%2 is 0
        x
    else
        (x+5)/2
for n in [1..9]
    S.ajoute A(x) for x in S.support
    S.ajoute B(x) for x in S.support
affiche S

Il donne le résultat suivant, confirmant que 100 peut être atteint et en combien d’étapes :

Question : L’ensemble des entiers ainsi obtenus est-il récursif ? Autrement dit, y a-t-il un moyen calculable de dire si un entier n’y est pas ?

encore une calculatrice bizarre : Là encore, deux fonctions A et B, mais le système dynamique semble avoir peu d’orbites :

HTML - 32.1 ko
autre systèle dynamique
celui-là rappelle Kaprekar mais avec deux fonctions à itérer

L’ascenceur : Après tout, avec ses touches et son affichage de l’étage courant, l’ascenseur est aussi une calculatrice :

HTML - 2.8 ko
l’ascenseur
assez difficile, mais on peut tâtonner en cliquant sur les boutons

Étages restant à parcourir

L’étage où se trouve actuellement l’ascenceur est calculé par des additions et des soustractions [1], et stocké dans la variable S. Alors pour mettre à jour la liste des étages restant à parcourir, on applique l’algorithme suivant :

  • On calcule la position de S dans le tableau aFaire ;
  • on stocke cet entier dans index ;
  • si index vaut -1, c’est que S n’est pas dans le tableau (étage déjà parcouru) ;
  • sinon, on enlève du tableau l’élément de numéro index (c’est donc S)

En JavaScript ça donne ceci :

var index = aFaire.indexOf(S);
if (index>-1) {
        aFaire.splice(index,1);
}

Pour mettre à jour la liste des étages déjà parcourus c’est beaucoup plus simple, il suffit de faire

fait.push(S);

si le tableau des étages déjà parcourus s’appelle fait.

Voici la version Android de ce jeu (programmée avec app Inventor) :

Zip - 1.4 Mo
ascenseur version Android
installable Android

addNimTion

Un remake de ce jeu, mais en CoffeeScript, et avec du CSS pour désactiver les boutons qu’on n’a pas le droit de jouer.

principe du CSS

Une fonction adjacency permet de savoir qui est à côté de qui [2] :

adjacency = (a,b) ->
    if a>b
        adjacency b, a
    else
        false if a is b
        switch b
            when 2 then (a is 1)
            when 3 then (a is 2)
            when 4 then (a in [1,2])
            when 5 then (a in [1..4])
            when 6 then (a in [2,3,5])
            when 7 then (a in [4,5])
            when 8 then (a in [4..7])
            when 9 then (a in [5,6,8])
            else false

Ensuite, on désactive tous les boutons, puis on ne réactive que ceux qui sont à côté de celui qui vient d’être joué (et qui s’appelle riposte) :

 $(".calc").each (x) -> $(this).removeClass "actif"
 $(".calc").each (x) -> $(this).addClass "actif" if adjacency(parseInt($(this)[0].innerHTML),riposte)

En effet,

$(this)[0].innerHTML

renvoie le contenu du bouton (le nombre qui est dessus) et en le « parseIntant », on a le nombre correspondant (parseInt convertit en entier)

HTML - 7.4 ko
addnimtion
le jeu addNimTion en CoffeeScript

[1d’ailleurs l’exercice est intéressant à programmer avec la tortue LOGO

[2On aurait pu faire plus simple en remplaçant cette fonction par un tableau, mais il s’agissait d’une matrice booléenne 9×9...


Commentaires

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 3 mai 2017, 14h-18h, PTU, Saint-Denis, salle S23.6
- Mardi 13 juin 2017, 14h-18h, campus du Tampon
- Mercredi 14 juin 2017, 14h-18h, PTU, Saint-Denis, salle S23.6


Brèves

À travers les labyrinthes : algorithmes et fourmis

dimanche 1er septembre 2013

Quand les chercheurs mettent au point des modèles d’optimisation et de recherche de plus court chemin qui s’inspirent du comportement de masse de colonies de fourmis...
À écouter : Sur les Épaules de Darwin, émission diffusée sur France Inter samedi 31 août 2013.

Rencontres Mondiales du Logiciel Libre à St-Joseph

mardi 20 août 2013

Les RMLLd se dérouleront pour la 2e fois à Saint-Joseph du 22 au 25 août.
C’est une opportunité pour les élèves qui suivent la spécialité ISN et les passionnés d’informatique.

Voici pour le samedi et le dimanche quelques interventions choisies :
- http://2013.d.rmll.info/Raspberry-votre-ordinateur-au-format-carte-de-credit?lang=fr
- http://2013.d.rmll.info/Materiel-libre-et-DIY?lang=fr
- http://2013.d.rmll.info/Arduino-de-l-electronique-libre?lang=fr

Noter aussi les conférences Art et Culture du dimanche, ainsi qu’une conférence plus engagée.

Le programme complet se trouve ici. Une radio sera ouverte pour l’occasion.
Des plaquettes à distribuer se trouvent ici.

Hyper-vidéos pour l’algorithmique au lycée

dimanche 19 août 2012

Olivier Roizès, à la demande de l’ADIREM, a réalisé une collection d’hyper-vidéos de présentation de logiciels et environnements de programmation. Ces hyper-vidéos, c’est-à-dire des vidéos contenant des éléments clicables, devraient être utiles aux enseignants désireux de se familiariser avec Python, CaRMetal, R, Rurple, Scilab ou Xcas.

Ouverture du SILO

mardi 1er novembre 2011

Le SILO (Science Informatique au Lycée : Oui !) est un espace collaboratif documentaire de partage et de formation collégiale, à destination des professeurs appelés à enseigner l’informatique au lycée.

Une initiative du CNDP, de l’INRIA et de Pasc@line, à laquelle se sont associés SPECIF, fuscia, EPI et ePrep.

Sur le Web : Site du SILO

Introduction à la science informatique

lundi 12 septembre 2011

Le CRDP de Paris publie le premier ouvrage destiné aux professeurs chargés d’enseigner la nouvelle spécialité « Informatique et sciences du numérique » en Terminale S à la rentrée 2012. Cet ouvrage a été coordonné par Gilles Dowek, directeur de recherche à l’INRIA.

Sur la création de la spécialité ISN, on pourra également consulter l’interview donnée au Café pédagogique par l’inspecteur général Robert Cabanne.

Sur le Web : CRDP de Paris

Deux publications sur l’algorithmique

samedi 17 octobre 2009

L’IREM d’Aix-Marseille publie une brochure de 73 pages, téléchargeable librement, intitulée Algorithmes et logique au lycée. Ces notions sont illustrées et déclinées sur des exercices du programme de spécialité mathématique en série L, mais sont adaptables aux programmes à venir.

Le hors série thématique n° 37 du magazine Tangente, disponible actuellement en kiosque, s’intitule « Les algorithmes. Au cœur du raisonnement structuré ». Extrait de l’éditorial : « La rédaction de Tangente a conçu la quasi-totalité de ce hors série thématique pour qu’il puisse être lu par des élèves de Seconde ».

Une carte mentale pour l’algorithmique

jeudi 10 septembre 2009

Sur son site, Jean-Jacques Dhénin a publié une carte mentale géante qui renvoie vers plus de 30 documents en ligne sur l’algorithmique. Tout ce qu’il faut — et même davantage — pour faire face au nouveau programme de Seconde !

Un catalogue libre d’algorithmes pour le lycée

dimanche 30 août 2009

Guillaume Connan, de l’IREM de Nantes, publie un catalogue libre de 119 pages d’algorithmes pour le lycée. Sur son site très riche, on trouvera d’autres documents en rapport avec l’algorithmique, notamment sur l’utilisation des langages fonctionnels au lycée et sur la comparaison programmation fonctionnelle/programmation impérative.

L’algorithmique à l’IREM de Lille

vendredi 26 juin 2009

Le groupe AMECMI de l’IREM de Lille vient de mettre en ligne des ressources importantes au service des professeurs de Seconde :

- Algorithmique et programmation (Emmanuel Ostenne)
- Bibliographie amoureuse de l’algorithmique (Alain Juhel)

Statistiques

Dernière mise à jour

samedi 27 mai 2017

Publication

745 Articles
Aucun album photo
131 Brèves
11 Sites Web
127 Auteurs

Visites

474 aujourd'hui
593 hier
2025184 depuis le début
46 visiteurs actuellement connectés