Cédric Villani sur un problème de maths

Youp.

Juste avant le weekend de Pâques, je présente une petite news de « 20 minutes », c’est Aline Mathey (prof de maths à Orléans) qui m’a alerté par mail. Déjà merci Aline, c’est toujours avec plaisir que je lis tes mails ! 🙂

Bref, voici que Cédric Villani joue à résoudre un problème de mathématiques vu il y a quelques années sur internet. Si, si, il se prête au jeu, et c’est plutôt chouette à voir.

On y voit l’essai-erreur, la réduction des choix possibles, un peu de vocabulaire sur la divisibilité, les priorités opératoires….

Bon d’abord voici le problème : on a une grille.

Il faut remplir les cases vides avec les nombres : 1,2,3,4,5,6,7,8,9. 

Et voici comment Cédric Villani s’en sort …. ou pas, mais la question n’est pas là, il n’était pas forcément prêt à travailler dessus. (Les journalistes l’ont un peu piégé).

Et puis, peut-être qu’en voyant cela, les élèves pourraient se dire que, oui, parfois on peut bloquer (tout le monde peut bloquer, même un boss des maths) , mais qu’il faut persévérer!

Pour info, ce problème à plusieurs solutions, une petit vingtaine, je crois.

Peut-être que programmer avec scratch pour le résoudre pourrait être un truc sympa…. A voir 🙂

 

 

Vous avez aimé cet article ? Alors partagez-le avec vos amis en cliquant sur les boutons ci-dessous :

Twitter Facebook Google Plus email
Licence Creative Commons

3 commentaires

  1. Salut et merci pour ton blog que je visite régulièrement,

    après avoir un peu galéré à chercher ce truc sans réussir je me suis décidé à faire un programme en Python que je te copie-colle ci-dessous.
    Il me trouve 128 solutions (je m’attendais à bien moins) et en en testant une au hasard, histoire de vérifier, je suis tombé sur un cas où les 2 divisions ne tombent pas « juste » mais donnent des « ,5 » qui se compensent : 8 + 13*9/2 + 3 + 12*1 – 5 – 11 + 7*6/4 – 10

    le programme :

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-

    import itertools

    def f(l):
    return l[0] + 13*l[1]/l[2] + l[3] + 12*l[4] – l[5] – 11 + l[6]*l[7]/l[8] – 10

    nb = 0

    for l in list(itertools.permutations([1,2,3,4,5,6,7,8,9])):
    result = f(l)
    if result == 66:
    print(l, ‘–>’, result)
    nb += 1

    print()
    print(‘Il y a {0} solutions !’.format(nb))

  2. Bonjour,
    J’ai cherché les solutions (avec un programme en c) selon deux méthodes :
    1) sans gérer les priorités des x et /, càd une opération après l autre. Il y a exactement 119 solutions (sans division à virgule)
    2) en gérant les priorités des opérateurs x et / et avec division sans reste il y a exactement 20 solutions parmi 9! :
    [ 1] 3 2 1 5 4 7 8 9 6
    [ 2] 3 2 1 5 4 7 9 8 6
    [ 3] 5 2 1 3 4 7 8 9 6
    [ 4] 5 2 1 3 4 7 9 8 6
    [ 5] 5 3 1 7 2 6 8 9 4
    [ 6] 5 3 1 7 2 6 9 8 4
    [ 7] 5 4 1 9 2 7 3 8 6
    [ 8] 5 4 1 9 2 7 8 3 6
    [ 9] 5 9 3 6 2 1 7 8 4
    [ 10] 5 9 3 6 2 1 8 7 4
    [ 11] 6 3 1 9 2 5 7 8 4
    [ 12] 6 3 1 9 2 5 8 7 4
    [ 13] 6 9 3 5 2 1 7 8 4
    [ 14] 6 9 3 5 2 1 8 7 4
    [ 15] 7 3 1 5 2 6 8 9 4
    [ 16] 7 3 1 5 2 6 9 8 4
    [ 17] 9 3 1 6 2 5 7 8 4
    [ 18] 9 3 1 6 2 5 8 7 4
    [ 19] 9 4 1 5 2 7 3 8 6
    [ 20] 9 4 1 5 2 7 8 3 6

Rejoignez la conversation

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *