Vous avez probablement été confronté une fois à un ami, qui prétendait pouvoir lire dans vos pensées, en faisant le tour suivant : pensez à un nombre entre 1 et 10 ; multipliez-le par 9 ; additionnez les chiffres du résultat (par exemple 23 -> 2 + 3 = 5) ; et soustrayez 5 de la somme. À ce stade, vous avez peut-être atteint la valeur 4. Comment puis-je le savoir ? En utilisant la même astuce que votre ami. Laissez-moi vous montrer en utilisant Clojure. Tout d’abord, nous allons écrire une fonction qui additionne les chiffres d’un nombre:
La valeur est transformée en une chaîne de caractères, la fonction map transforme chaque caractère du chiffre en une liste d’entiers et la fonction apply additionne la liste d’entiers, renvoyant le total à l’appelant de la fonction sum-digits. Nous allons utiliser cette fonction pour composer les calculs du tour:
La fonction puzzle effectue les calculs dans l’ordre que votre ami vous a demandé. D’abord, elle multiplie le nombre que nous pensions par 9, puis elle additionne les chiffres du résultat et enfin soustrait le total par 5. Ensuite, nous allons écrire une autre fonction pour dévoiler l’astuce:
La fonction plage produit une séquence de nombres commençant de 1 à 10 où 11 n’est pas inclus (1 2 3 4 5 6 7 8 9 10). La fonction map applique la fonction puzzle à chaque nombre de la liste et produit une autre liste avec les résultats. Maintenant, exécutez la fonction unveil pour voir le résultat:
Oh, regardez ! Pour la plage de 1 à 10, le résultat sera toujours 4. En d’autres termes, un motif. Les modèles sont très présents dans les multiplications et lorsque vous les supprimez tous, vous obtenez des nombres premiers, comme le souligne Mark Haddon dans son livre “The Curious Incident of the Dog in the Night-Time”. Daniel Tammet illustre certains modèles dans son livre “Thinking in Numbers : How Maths Illuminates Our Lives”. Lorsque nous multiplions n’importe quel nombre pair par 5, nous obtenons toujours des nombres se terminant par zéro (par exemple 12 x 5 = 60) et lorsque nous le faisons avec des nombres impairs, nous obtenons toujours des nombres se terminant par 5. Dans le cas de 9, chaque fois que nous multiplions 9 par un nombre entre 1 et 10 et que nous additionnons ses chiffres, nous obtenons toujours 9.
Dans la séquence, soustraire 5 de 9 ne fera que détourner votre attention du modèle de multiplication et même améliorer le tour. Par exemple : imaginez que chaque lettre de l’alphabet a un chiffre correspondant (A – 1, B – 2, C – 3, …). Maintenant, prenez le résultat (4) et obtenez sa lettre respective ; pensez à un pays qui commence par cette lettre ; prenez la quatrième lettre de ce pays et pensez à un animal qui commence par cette lettre. Il y a de fortes chances que votre réponse finale soit “Danemark” et “singe”. Avant que vous ne pensiez que je lis dans vos pensées, laissez-moi vous expliquer ce qui vient de se passer.
Premièrement, il n’y a pas beaucoup de pays qui commencent par “D”, la quatrième lettre de l’alphabet. Parmi le Danemark, Djibouti, la Dominique et la République dominicaine, vous vous souviendrez facilement du Danemark. La quatrième lettre du Danemark est “M” et aucun animal qui commence par “M” n’est plus célèbre que le singe, qui vous vient immédiatement à l’esprit.
Je m’amuse à programmer en Clojure, non seulement parce que Clojure est amusant à apprendre et à enseigner, mais aussi parce que la programmation ne concerne pas toujours des choses sérieuses. Être capable de programmer juste assez de code pour faire bouger les choses stimule la réflexion, la résolution de problèmes et la créativité par rapport à la structure, aux modèles, aux conventions et aux styles. Le codage est censé être relaxant, pas stressant. Profitez-en !