

En survolant un article du demotivateur ce matin je suis tombé sur cette image :
Dans son article, Albane P nous apprend que si vous voyez :
Deux profils : vous êtes du genre à faire facilement l’autruche et préférez généralement fuir les problèmes lorsque vous les rencontrez.
Un chandelier : vous êtes celui qui préfère faire quelques pas en arrière afin de prendre du recul. Vous rassemblez toujours des informations et étudiez une situation en profondeur avant de vous attaquer à un problème pour commencer à le résoudre.
J’appartiens à une communauté à qui saute aux yeux tout autre chose, et sans aucune ambiguïté ! Pas vous ?
Je profite des vacances et de la météo désastreuse dans le Pas-de-Calais en ce mois de juillet pour dresser un état des lieux du site. La première version date des débuts d’internet mais la version actuelle, avec ce nom de domaine est né en 2008, en janvier.
Environs quatre millions de pages ont été visitées depuis 2008. 84% des visiteurs sont français, le reste se partageant majoritairement entre les Etats Unis, et l’ Afrique du Nord (6% pour la Tunisie)
Historiquement, les premières versions regroupaient surtout des pages de type leçons en Mathématiques couvrant l’ensemble du collège, ce sont ces pages qui continuent à générer le plus de visites aujourd’hui. (Ainsi la page d’entrée la plus fréquente est une leçon de trigonométrie pour les élèves de troisième. )
Aujourd’hui, à la dispositions des élèves et des collègues, vous pouvez trouver sur le site2wouf.fr :
Les 12000 feuilles sont corrigées pour permettre une utilisation autonome de ces ressources par les élèves. Chacune d’entres elles est hébergée sur une page html qui propose, pour une utilisation en classe le problème du jour (différent chaque jour) , à faire en groupe par exemple.
Le site est en évolution constante en fonction des réactions des visiteurs. Ainsi cette année de nombreux lycéens ont été intéressé, pour préparer le grand oral par deux thèmes abordés souvent ici :
Je terminerai en vous remerciant : ce sont vous, les visiteurs, qui donnent un sens à mon investissement pour faire vivre ce site ! Merci.
J’ai adoré l’initiative et l’originalité du travail proposé par des élèves du collège Louise Michel durant l’année 2019-2020 : Un cahier de problème et d’énigmes.
Même si au départ j’ai été choqué que ce document soit publié avec une erreur dès l’énigme 2, j’ai pris beaucoup de plaisir à le parcourir et à faire travailler des élèves de sixièmes sur ces jolis problèmes.
Parlons en premier de l’erreur évoquée, intéressante, avec en tête cette citation de John Fitzgerald Kennedy
“Une erreur ne devient une faute que si l’on refuse de la corriger.”
Je suis un nombre décimal compris entre 0 et 30.
Mon chiffre des dizaines est le quart de mon chiffre des unités qui est égal à 8.
Mon chiffre des dixièmes est le seul chiffre présent dans le résultat de 33÷3.
Mon nombre de millièmes est le double de 5×9 + 7.
On arrive facilement à un nombre de la forme 28,1?????? à l’aide des 3 premiers indices.
Le dernier indice nous apprends que le nombre de millièmes est 104 donc que le nombre est de la forme 0,104?????
Thais attendait surement 28,104 mais dans ce nombre il y a, hélas, 28104 millièmes ! (Si vous n’êtes pas convaincus, demandez-vous combien il y a de centimes dans 1,20€… 120 ou 20?) On aurait pu corriger le dernier indice ainsi:
Le nombre de millièmes de ma partie décimale est le double de 5×9 + 7.
Dans cet immeuble de onze étages, l’ascenseur est bien étrange.
Il ne peut monter que 2, 3 ou 5 étages à la fois et ne peut descendre que 4 ou 11 étages.
Le concierge, dont la loge est située au rez-de-chaussée, doit procéder à la distribution du courrier.
Comment doit-il opérer pour partir de sa loge, s’arrêter une fois et une seule à chaque étage, et revenir chez lui ?
Cet exercice est classique et amusant. Mais souvent on ne propose que 3 déplacements possibles. Et je me suis posé une question : A-t-on encore des solutions quand on ne s’autorise que 3 déplacements (Par exemple : +2, +3 et -4)
class Immeuble: def __init__(self,etages,possibles,depart=0): self.etages=etages self.possibles=possibles self.depart=depart class Voyage: def __init__(self,passe,i): self.passe=passe self.i=i def enfants(self): boutons=[] if len(self.passe)==0: self.passe=[self.i.depart] for j in self.i.possibles: if self.passe[-1]+j in [x for x in self.i.etages if x not in self.passe]: boutons.append(j) liste=[] for j in boutons : newpasse=[x for x in self.passe] newpasse.append(self.passe[-1]+j) liste.append(newpasse) return [Voyage(l,self.i) for l in liste] def etudie(x,y,z,t=None): if t==None: t=x i=Immeuble(x,y,z) v=Voyage([],i) n=2 liste=[Voyage(x.passe,i) for x in v.enfants()] oldliste=liste while len(liste) !=0: n+=1 newliste=[] for k in liste: for l in k.enfants(): newliste.append(Voyage(l.passe,i)) oldliste=liste liste=[x for x in newliste] return [u for u in oldliste if u.passe[-1] in t] a=etudie(list(range(12)),[2,3,5,-4,-11],0,[4,11]) compteur=0 for i in a : compteur+=1 j="-".join([str(x) for x in i.passe]) print("{}/ {}".format(compteur,j)) k=input(" FIN ")
Ce qui est raccord avec la correction proposée :
def etudie(x,y,z,t=None) est la fonction qui retourne une liste contenant les chemins.
Elle reçoit en paramètres :
Les chemins retournés dans la liste ont chacun un paramètre .passe (passé) qui est une liste des étages parcourus.
Modifions la ligne a=etudie(list(range(12)),[+2,+3,5,-4,-11],0,[4,11]) en a=etudie(list(range(12)),[+3,5,-4,-11],0,[4,11]) pour signifier que l’on a, comme choix que:
Nous n’avons pas de solution !
Modifions maintenant la ligne a=etudie(list(range(12)),[+2,+3,5,-4,-11],0,[4,11]) en a=etudie(list(range(12)),[+2,+3,-4,-11],0,[4,11]) pour signifier que l’on a, comme choix que:
Il nous restait 4 solutions, mais seulement de 11 étapes (pas 12) . Ainsi la ligne 1 ne contient pas 10, la 2 ne contient pas 1…
Pour éviter ce souci, j’ai modifier le code source pour ne renvoyer les chemins que quand toutes les étapes sont parcourues :
class Immeuble: def __init__(self,etages,possibles,depart=0): self.etages=etages self.possibles=possibles self.depart=depart class Voyage: def __init__(self,passe,i): self.passe=passe self.i=i def enfants(self): boutons=[] if len(self.passe)==0: self.passe=[self.i.depart] for j in self.i.possibles: if self.passe[-1]+j in [x for x in self.i.etages if x not in self.passe]: boutons.append(j) liste=[] for j in boutons : newpasse=[x for x in self.passe] newpasse.append(self.passe[-1]+j) liste.append(newpasse) return [Voyage(l,self.i) for l in liste] def etudie(x,y,z,t=None): if t==None: t=x i=Immeuble(x,y,z) v=Voyage([],i) n=2 liste=[Voyage(x.passe,i) for x in v.enfants()] oldliste=liste while len(liste) !=0: n+=1 newliste=[] for k in liste: for l in k.enfants(): newliste.append(Voyage(l.passe,i)) oldliste=liste liste=[x for x in newliste] nb_etapes=len(oldliste[0].passe) if nb_etapes==len(x): return [u for u in oldliste if u.passe[-1] in t] else: return [] a=etudie(list(range(12)),[+2,3,-4,-11],0) compteur=0 for i in a : compteur+=1 j="-".join([str(x) for x in i.passe]) print("{}/ {}".format(compteur,j)) k=input(" FIN ")
Ainsi avec comme point de départ une activité proposée par un élève de sixième, de nombreuses portes se sont ouvertes, et j’ai continué un long moment à m’amuser avec cet ascenseur !
Finalement j’ai intégré au site de Wouf ces « exercices du jour » : L’ascenseur fou fou fou où je propose en téléchargement 400 problèmes gratuits en pdf de ce type.
J’aime beaucoup les miniatures, c’est à dire les partie d’échecs (quel que soit la cadence) de 20 coups ou moins qui se termine par un gain. Elles ont des vertus pédagogiques en soulignant des pièges d’ouvertures par exemple. Et surtout, elles sont souvent plaisantes pour les débutants.
Je joue sur lichess.org (wouf) et il très facile d’y partager ses partie en gif. C’est ce que j’ai décidé de faire aujourd’hui et je le referai régulièrement, quand il s’agira de miniatures .
Bien sûr ces parties ne sont pas des chefs-d’œuvre et vous pouvez réagir pour critiquer un coup !