1 points par GN⁺ 2025-02-24 | 1 commentaires | Partager sur WhatsApp
  • Le casse-tête consistant à former des nombres avec seulement quatre 2 s’étend d’un puzzle d’arithmétique à un jeu mathématique avancé selon l’ampleur des opérations autorisées
  • Avec seulement des fractions et les quatre opérations, on peut former les nombres de 1 à 6, et en ajoutant les exposants et les factorielles, on peut aussi construire de grands nombres comme 18, 28, 256 et 65536
  • Si l’on concatène les 2 pour obtenir 22 ou 222, ou si l’on utilise les nombres complexes et la valeur absolue, on peut représenter de nombreuses valeurs difficiles à obtenir par de simples calculs
  • Le 7 est connu comme un nombre difficile à construire, mais si l’on autorise des outils comme la fonction gamma, on peut l’obtenir directement avec quatre 2
  • La solution générale de Paul Dirac utilise des racines carrées imbriquées et le logarithme en base 2 pour représenter n’importe quel nombre, avec la substitution 2 = √(2+2) afin d’utiliser exactement quatre 2

Règles de base pour former des nombres avec quatre 2

  • La règle du puzzle consiste à utiliser le chiffre 2 exactement quatre fois et, sans autre chiffre, à former le nombre cible uniquement avec des opérations mathématiques
  • Avec les quatre opérations et les fractions, il est relativement facile de former de petits nombres
    • 1 = (2+2)/(2+2)
    • 2 = 2/2 + 2/2
    • 3 = 2·2 - 2/2
    • 4 = 2+2+2-2
    • 5 = 2·2 + 2/2
    • 6 = 2·2·2 - 2
  • Si l’on autorise les exposants et les factorielles, l’éventail des expressions possibles s’élargit considérablement
    • 18 = 2^(2^2) + 2
    • 28 = (2+2)! + 2 + 2
    • 256 = (2+2)^(2+2)
    • 65536 = 2^(2^(2^2))
  • La concaténation des chiffres est aussi une astuce fréquente dans ce puzzle
    • 26 = 22 + 2 + 2
    • 11 = 22 / √(2+2)
    • 444 = 222 · 2
  • Le 7 est particulièrement difficile à obtenir, mais avec la fonction gamma, on peut l’exprimer ainsi : 7 = Γ(2) + 2 + 2 + 2
  • Le fil de discussion Math StackExchange contient des exemples utilisant des intégrales, des décimaux périodiques et des opérateurs combinatoires
  • Avec les nombres complexes et la valeur absolue, on obtient aussi des expressions comme 12 = |2 + 2√-2|²

La solution générale de Dirac

  • Paul Dirac a trouvé une solution générale applicable à tous les nombres, dont le mécanisme central repose sur des racines carrées imbriquées
  • En appliquant de façon répétée la racine carrée à 2, on peut réécrire cela sous forme exponentielle comme suit
    • √2 = 2^(1/2) = 2^(2^-1)
    • √√2 = 2^(1/4) = 2^(2^-2)
    • √√√2 = 2^(1/8) = 2^(2^-3)
  • Après n applications de la racine carrée, on obtient une expression de la forme √√...√2 = 2^(2^-n)
  • En prenant ensuite une fois le logarithme en base 2, on obtient 2^-n, puis en reprenant le logarithme, on obtient -n
  • Ainsi, un entier arbitraire n peut s’écrire sous la forme n = -log₂(log₂(√√...√2))
  • Comme l’expression d’origine n’utilise que trois chiffres 2, on peut remplacer l’un d’eux par 2 = √(2+2) pour obtenir une expression utilisant exactement quatre 2
  • Par exemple, on peut représenter 7 en imbriquant sept racines carrées de la manière suivante 7 = -log_{√(2+2)}(log₂(√√√√√√√2))
  • Le n figurant dans l’expression n’est pas un chiffre réellement présent dans la formule, mais une notation auxiliaire servant à compter le nombre de répétitions de la racine carrée
  • En fin de compte, la voie vers la représentation de tous les nombres est ouverte, mais il reste à écrire correctement autant de signes de racine carrée que nécessaire

1 commentaires

 
GN⁺ 2025-02-24
Avis sur Hacker News
  • Dès qu’on autorise les fonctions, j’ai l’impression qu’on abandonne l’esprit du jeu
    Par exemple, la fonction gamma vaut (n-1)!, donc on revient à fabriquer 7 avec quatre 2 et un 1
    Si l’on peut cacher des nombres dans les appels de fonction, réussir à tous les coups devient trop facile

    • +, - (binaire/unaire), ×, ÷ sont aussi des fonctions, et l’exponentiation aussi. Alors pourquoi faudrait-il les autoriser ?
      Dans ce genre d’énigmes, il peut toujours y avoir débat sur le périmètre des fonctions élémentaires, mais je ne pense pas qu’il faille interdire la racine carrée
      Quant à dire que la fonction gamma est (n-1)!, 2 n’est finalement que S(S(0)) (https://en.wikipedia.org/wiki/Peano_axioms)
      La construction de Paul Dirac est difficile à qualifier de triviale, et je me demande si vous la trouvez vraiment triviale ou si vous connaissez une construction plus simple
    • C’est aussi la première chose qui m’est venue à l’esprit dès que la fonction gamma est apparue
      Pourquoi autoriser la fonction gamma, mais pas d’autres fonctions ? Si l’on introduit des fonctions arbitraires, on peut résoudre le jeu comme on veut
      Au fond, dès le début de l’article, je vois cela comme un problème dont les règles ne sont pas correctement définies. Il faudrait préciser l’ensemble des fonctions ou opérations autorisées, et l’objectif de montrer comment le problème s’étend selon le niveau de connaissances pourrait rester intact avec cette correction
    • Au final, c’est pour s’amuser, et la fonction gamma et la racine carrée peuvent être considérées comme suffisamment fondamentales
      Si on le souhaite, on peut se limiter à différents sous-ensembles de fonctions et essayer de prouver quels nombres sont possibles ou impossibles dans ce cadre
      L’article parlait d’ailleurs d’« outils mathématiques », pas de fonctions arbitraires
    • La remarque est pertinente, mais comme d’autres l’ont dit, le fait d’« autoriser les fonctions » n’est pas en soi le problème. Les opérations mathématiques de base sont elles aussi des fonctions
      En revanche, si l’on n’autorise que les fonctions qui envoient des tuples d’entiers vers un entier ((Z, Z, ...) -> Z), l’esprit du jeu original est préservé
      Ainsi, la racine carrée et le logarithme disparaissent, l’addition, la soustraction et la multiplication restent, mais la division disparaît. La factorielle n! et l’exponentiation à exposant non négatif peuvent aussi être autorisées
      Je me demande s’il serait possible de construire une solution générale avec cette contrainte
    • La solution de Dirac n’utilise pas la fonction gamma, seulement N racines carrées et 2 logarithmes
  • Si l’on peut « utiliser n’importe quelle opération mathématique », c’est facile : il suffit d’utiliser la fonction successeur
    S(n) = n+1
    6 = 2*2*2-2
    7 = S(2*2*2-2)
    8 = S(S(2*2*2-2))
    Et ainsi de suite

    • Vu la contrainte de « ne pas utiliser d’autres chiffres », le 1 dans la première ligne me semble être de la triche
    • J’ai fait beaucoup de maths à l’école, je travaille dans l’ingénierie et j’utilise les maths tous les jours, et je suis abonné à beaucoup de chaînes YouTube de maths, mais c’est la première fois de ma vie que j’entends parler de cette fonction
      Cette énigme n’a pas vraiment de règles officielles, mais cette fonction ne me semble pas du tout connue
    • Chercher, pour un entier donné, l’expression la plus courte avec quatre 2 serait sans doute un défi plus intéressant
    • J’ai eu la même pensée. La racine carrée est aussi une manière de cacher un 2 derrière la notation
      Si l’on ne précise pas combien de fois tel ou tel opérateur peut être utilisé, l’ensemble du projet n’est pas très cohérent
    • Le lambda-calcul est entré dans la conversation
  • Dans le même esprit, il y a aussi “Representing numbers using only one 4”, écrit en 1964 par Donald Knuth, alors âgé de 26 ans (https://www.jstor.org/stable/2689238)
    Il a aussi été repris au chapitre 10 de ses Selected Papers on Fun and Games, et n’utilise qu’un seul chiffre 4 et trois opérations : √x (racine carrée), ⌊x⌋ (fonction partie entière inférieure) et x! (factorielle)
    L’article se termine sur une conjecture encore non résolue : peut-on représenter tous les entiers de cette manière ?
    L’annexe ajoutée au livre de 2011 présente aussi un article encore plus ancien, de 1962, signé J. H. Conway et M. J. T. Guy, intitulé “π in Four 4's” et long d’une page et demie. C’est une idée similaire, écrite alors qu’ils étaient étudiants à Cambridge : https://archive.org/details/eureka-25/page/18/mode/1up?view=...
    Par exemple, 5 = ⌊√√√√√(4!)!⌋, car 24! se situe entre 5^32 et 6^32

  • Je suis peut-être le seul, mais j’ai trouvé étrange le choix d’utiliser sqrt(2+2) au lieu de sqrt(2*2) ou sqrt(2^2)
    Cela masque inutilement la raison pour laquelle 2=sqrt(2+2)

    • Bonne remarque, mais ce n’est pas forcément seulement un choix étrange de l’auteur
      L’ensemble de l’article, chaque argument, la thèse générale, les phrases, la mise en forme, etc., consomment de la bande passante cognitive, et il pouvait aussi y avoir une pression temporelle
      Le critique, lui, peut se concentrer tranquillement sur un seul point, donc cela paraît évident :)
    • Il existe peut-être quelque part un score de golf qui récompense les opérations à faible coût
      Le « hack de Dirac » coûterait sans doute beaucoup de points
    • Vraiment ? Pourquoi ? 2+2, 2*2, 2^2 valent tous manifestement 4, et sqrt(4)=2; je ne vois pas en quoi + serait plus étrange que les autres
  • Personnellement, je préfère le côté concision
    J’avais créé une machine à pile avec des commandes sur un seul caractère, et je devais résoudre une variante de ce problème. Les chiffres n’allaient que de 0 à 9, et les caractères 23 signifiaient pousser 2, puis pousser 3. Pour représenter le nombre 23 lui-même, il fallait écrire quelque chose comme 45*3+
    Il restait donc le problème d’encoder chaque entier avec le plus petit nombre de caractères possible
    Les outils disponibles étaient les chiffres 0 à 9, P : Pi, * : (a * b), / : (a / b), - : (a - b), + : (a + b), s : sin(a), c : cos(a), q : sqrt(a), l : log(a), ~ : abs(a), # : round(a), $ : Math.floor(a), C : clamp(a), < : min(a, b), > : max(a, b), ^ : pow(a, b), a : atan2(a, b), % : positiveMod(a, b), ! : (1 - a), ? : (a <= 0 ? 0 : 1), o : a xor b scaled by c; ((a*c) xor (b*c))/c, d : dupliquer le sommet de la pile, : : échanger les deux éléments du sommet, ; : échanger l’élément du sommet et le troisième
    Je me demande ce qu’on pourrait faire si je recréais plus tard cette machine à pile sous forme de pile de nombres complexes
    La prochaine fois que je posterai un truc comme ça, je ne le ferai pas depuis mon téléphone

    • La réponse générale pourrait être non calculable
      https://en.wikipedia.org/wiki/Kolmogorov_complexity
    • Et si l’on construisait chaque nombre avec une commande « multiplier par 10 et ajouter ce chiffre », et une commande séparée, comme un espace, pour pousser 0 ? On pourrait alors représenter 23 par " 23"
    • Cela me rappelle https://www.hacker.org/hvm/ (2008)
    • Pas mal de nombres seraient probablement encodés en base 9 ou en base 10. En gros, ce serait une répétition de motifs du type digit + * digit + *, ou une forme équivalente
  • C’est bien un petit défaut de dire qu’on « n’utilise que trois fois le chiffre 2 », mais seulement si l’on ignore le fait que la notation radicale cache une puissance 1/2 en prenant cette valeur commune comme valeur par défaut
    Il y a pas mal de 2 cachés

    • Il est difficile de dire que la notation radicale cache vraiment quelque chose. Le fait que ce soit presque la même chose qu’une puissance un demi est un théorème
      Dans ce cas, il faudrait aussi reconnaître que 2 cache 1+1, et le jeu devient-il alors impossible ?
      Comme les polynômes quadratiques sont bien plus courants que les polynômes de degré supérieur, la racine carrée paraît plus fondamentale qu’une puissance arbitraire
      Beaucoup soulignent qu’autoriser des fonctions sophistiquées rend le jeu ridicule, mais personnellement je trouve qu’il y a beaucoup de plaisir à chercher une solution satisfaisante même sans restrictions de règles précises
  • Il y avait, dans le même esprit, un défi de reverse engineering/CTF. Je ne donnerai pas son nom pour éviter la triche, mais ma solution consistait à injecter un shellcode qui ajoutait un certain nombre au pointeur de pile
    Sauf que tout le shellcode, y compris le nombre ajouté, ne pouvait utiliser que des octets ASCII alphanumériques
    J’ai donc utilisé un solveur SAT pour trouver une combinaison de nombres à additionner qui donne la valeur voulue sans utiliser d’octets interdits
    https://docs.google.com/presentation/d/19K7SK1L49reoFgjEPKCF...

  • Cela me rappelle le jeu mobile Tchisla. Il faut y fabriquer tous les nombres jusqu’à 1000 ou 10000 à partir d’un nombre donné, de quelques opérateurs, de racines carrées, de !, etc.
    C’est assez amusant, on développe des stratégies au fil du temps, et l’expérience utilisateur est simple et efficace. Il faut juste savoir à l’avance que cela peut engloutir énormément de temps
    [0] https://apps.apple.com/fr/app/tchisla-number-puzzle/id110062...

  • Il existe le classique problème des quatre 4, que j’ai découvert enfant dans le livre « The Man Who Counted »
    https://en.wikipedia.org/wiki/Four_fours
    https://en.wikipedia.org/wiki/The_Man_Who_Counted

    • C’est aussi la version que j’ai apprise enfant. Cette page que j’ai créée pourrait aussi être amusante
      The Definitive Four Fours Answer Key
      https://dwheeler.com/fourfours/
    • C’était exactement ça
      C’est avec ça que j’ai appris la fausse induction. J’aimais aussi l’histoire où des gens sont alignés, avec quelque chose collé dans le dos, et doivent deviner ce que c’est
  • C’est impressionnant, mais il y a beaucoup trop de 2 cachés dans ce symbole sqrt