{"id":2081,"date":"2026-04-18T10:42:27","date_gmt":"2026-04-18T09:42:27","guid":{"rendered":"https:\/\/blog.univ-angers.fr\/mathsinfo\/?p=2081"},"modified":"2026-04-18T11:21:07","modified_gmt":"2026-04-18T10:21:07","slug":"jouons-avec-les-dictionnaires","status":"publish","type":"post","link":"https:\/\/blog.univ-angers.fr\/mathsinfo\/2026\/04\/18\/jouons-avec-les-dictionnaires\/","title":{"rendered":"Jouons avec les dictionnaires"},"content":{"rendered":"\n<p>Voici quelques jeux de mots originaux inspir\u00e9s du fil de\u00a0<a href=\"https:\/\/x.com\/aaaronson\">Adam Aaronson<\/a>\u00a0sur X. Le principe : appliquer des crit\u00e8res math\u00e9matiques ou visuels \u00e0 des listes de mots fran\u00e7ais class\u00e9s par longueur (de 2 \u00e0 15 lettres) pour trouver des champions inattendus.<\/p>\n\n\n\n<p>Nous aurons besoin de dictionnaires (mots de 2 lettres \u00e0 15 lettres), <a href=\"https:\/\/univangersfr-my.sharepoint.com\/:u:\/g\/personal\/eric_schrafstetter_univ-angers_fr1\/IQAmx8bE6T_EQpWVYudH1b7ZAUef_Z7xq86oNlWh5OPXp8w?e=ff7kVI\" target=\"_blank\" rel=\"noreferrer noopener\">les voici de fa\u00e7on s\u00e9par\u00e9s<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mot qui parcourt la plus longue distance dans l&rsquo;alphabet<\/h3>\n\n\n\n<p>En parcourant un mot lettre \u00e0 lettre, on mesure la distance alphab\u00e9tique entre chaque paire de lettres cons\u00e9cutives. Plus les lettres sautent loin dans l&rsquo;alphabet, plus le score est \u00e9lev\u00e9.<\/p>\n\n\n\n<p><strong>Exemple :<\/strong>\u00a0\u00ab AXA \u00bb \u2014 de A \u00e0 X, il y a 23 pas, puis 23 de retour de X \u00e0 A, soit une distance totale de 46.<br><strong>Objectif :\u00a0trouver, pour chaque longueur, le mot cumulant la plus grande distance alphab\u00e9tique.<\/strong><br><br>Vous devriez trouver : <\/p>\n\n\n\n<p>2 : AY (24)<br>3 : AXA (46)<br>4 : AXAT (65)<br>5 : RAYAT (84)<br>6 : ZEZAYA (115)<br>7 : ZEZAYAT (134)<br>8 : ZEZAYANT (134)<br>9 : ZEZAYATES (163)<br>10 : ZEZAYASSES (161)<br>11 : ZEZAYASSIEZ (168)<br>12 : REHYDRATATES (171)<br>13 : PARAPHRASATES (183)<br>14 : REVASCULARISAT (196)<br>15 : REVASCULARISERA (203)<\/p>\n\n\n\n<p><em>La famille des \u00ab z\u00e9zayer \u00bb (parler en substituant des \u00ab z \u00bb aux \u00ab j \u00bb ou \u00ab s \u00bb) domine largement les mots courts gr\u00e2ce \u00e0 l&rsquo;alternance entre Z, la derni\u00e8re lettre, et des lettres du d\u00e9but de l&rsquo;alphabet.<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def score(mot):\n    return sum(abs(ord(b) - ord(a)) for a, b in zip(mot, mot&#091;1:]))\n\nfor i in range(2, 16):\n    with open(f\"dic{i}.txt\") as f:\n        mots = &#091;line.strip() for line in f if line.strip()]\n\n    solution = max(mots, key=score)\n\n    print(f\"{len(solution)} : {solution} ({score(solution)})\")<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Mots les plus \u00e9troits<\/h3>\n\n\n\n<p>Tous les caract\u00e8res n&rsquo;ont pas la m\u00eame largeur \u00e0 l&rsquo;\u00e9cran. En police Arial 16 px, un \u00ab i \u00bb ou un \u00ab l \u00bb occupe bien moins d&rsquo;espace qu&rsquo;un \u00ab m \u00bb ou un \u00ab w \u00bb. Quel mot, pour chaque longueur, tient dans le moins de pixels possible ?<br><strong>Exemple :<\/strong>\u00a0\u00ab il \u00bb \u00e9crit en Arial prend moins de place que \u00ab ma \u00bb.<br><strong>Objectif :<\/strong>\u00a0trouver, pour chaque longueur, le mot le plus \u00e9troit.<br><br>Vous devriez trouver :<\/p>\n\n\n\n<p>2 : il (7.1)<br>3 : fil (11.55)<br>4 : fifi (16.0)<br>5 : flirt (21.33)<br>6 : rififi (24.88)<br>7 : jaillit (31.1)<br>8 : titiller (37.33)<br>9 : titillait (40.0)<br>10 : liliiflore (48.88)<br>11 : titillerait (54.23)<br>12 : illisibilite (58.65)<br>13 : illisibilites (66.65)<br>14 : infaillibilite (72.9)<br>15 : infaillibiliste (80.9)<\/p>\n\n\n\n<p><em>Les lettres i, l, f et t sont les grandes gagnantes \u2014 et il n&rsquo;est pas surprenant qu&rsquo;\u00ab illisibilit\u00e9 \u00bb apparaisse dans le palmar\u00e8s, un mot presque fait sur mesure pour ce d\u00e9fi !<\/em><\/p>\n\n\n\n<p><a href=\"https:\/\/x.com\/aaaronson\/status\/2039380094477574608\/photo\/1\" target=\"_blank\" rel=\"noreferrer noopener\">Largeurs des lettres<\/a> en Arial 16px : <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2026\/04\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"908\" height=\"1024\" src=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2026\/04\/image-908x1024.png\" alt=\"\" class=\"wp-image-2082\" style=\"aspect-ratio:0.888926592014478;width:372px;height:auto\" srcset=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2026\/04\/image-908x1024.png 908w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2026\/04\/image-266x300.png 266w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2026\/04\/image-768x866.png 768w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2026\/04\/image-1362x1536.png 1362w, https:\/\/blog.univ-angers.fr\/mathsinfo\/files\/2026\/04\/image.png 1470w\" sizes=\"auto, (max-width: 908px) 100vw, 908px\" \/><\/a><\/figure>\n<\/div>\n\n\n<pre class=\"wp-block-code\"><code># poids des lettres a \u2192 z\nw = &#091;8.9, 8.9, 8.0, 8.9, 8.9, 4.45, 8.9, 8.9, 3.55, 3.55,\n     8.0, 3.55, 13.3, 8.9, 8.9, 8.9, 8.9, 5.33, 8.0, 4.45,\n     8.9, 8.0, 11.6, 8.0, 8.0, 8.0]\n\n# fonction de score d\u2019un mot\ndef score(mot):\n    return sum(w&#091;ord(c) - 65] for c in mot)  # A=65\n\n# parcours des fichiers\nfor i in range(2, 16):\n    with open(f\"dic{i}.txt\") as f:\n        mots = &#091;line.strip() for line in f if line.strip()]\n\n    # mot avec score minimal\n    solution = min(mots, key=score)\n\n    print(f\"{len(solution)} : {solution.lower()} ({score(solution)})\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Mots avec les lettres les plus \u00e9loign\u00e9es dans l&rsquo;alphabet<\/h3>\n\n\n\n<p>Cette fois, on s&rsquo;int\u00e9resse non plus aux sauts entre lettres cons\u00e9cutives, mais \u00e0 la position absolue de chaque lettre dans l&rsquo;alphabet. Z vaut 26, A vaut 1. Quel mot affiche la moyenne de position la plus haute ?<br><strong>Exemple :<\/strong>\u00a0\u00ab ZUT \u00bb \u2192 Z (26) + U (21) + T (20) = 67, moyenne = 22,33.<br><strong>Objectif :<\/strong>\u00a0trouver, pour chaque longueur, le mot dont les lettres occupent en moyenne la position la plus haute dans l&rsquo;alphabet.<br><br>Vous devriez trouver :<\/p>\n\n\n\n<p>2 : WU (22.00)<br>3 : ZUT (22.33)<br>4 : YUZU (23.25)<br>5 : TUTUS (20.20)<br>6 : YOUYOU (20.33)<br>7 : YOUYOUS (20.14)<br>8 : SURTOUTS (19.12)<br>9 : TURLUTUTU (19.33)<br>10 : VOUSSOYONS (18.40)<br>11 : YOUYOUTIONS (18.09)<br>12 : YOUYOUTERONT (17.83)<br>13 : YOUYOUTERIONS (17.08)<br>14 : YOUYOUTASSIONS (17.00)<br>15 : POURSUIVISSIONS (16.33)<\/p>\n\n\n\n<p><em>Le youyou (petit canot \u00e0 rames) et ses conjugaisons s&rsquo;imposent dans presque toutes les longueurs \u2014 preuve que Y, U et O sont redoutables \u00e0 ce jeu-l\u00e0.<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def score(mot):\n    return sum(ord(c) - 64 for c in mot)\n\nfor i in range(2, 16):\n    with open(f\"dic{i}.txt\") as f:\n        mots = &#091;line.strip() for line in f if line.strip()]\n\n    solution = max(mots, key=score)\n    moyenne = score(solution) \/ i\n\n    print(f\"{len(solution)} : {solution} ({moyenne:.2f})\")<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Mots \u00e9crits avec les <em>n<\/em> premi\u00e8res lettres de l&rsquo;alphabet<\/h3>\n\n\n\n<p>Nouveau d\u00e9fi : construire des mots en se limitant \u00e0 un sous-ensemble restreint de l&rsquo;alphabet. On part des deux premi\u00e8res lettres \u2014 A et B \u2014 et on en ajoute une \u00e0 chaque \u00e9tape jusqu&rsquo;\u00e0 la quatorzi\u00e8me. La question est simple : quel est le mot le plus long que l&rsquo;on peut \u00e9crire en n&rsquo;utilisant que ces lettres-l\u00e0 ?<\/p>\n\n\n\n<p>Avec seulement A et B, on est vite \u00e0 court d&rsquo;options : \u00ab baba \u00bb fait figure de champion avec ses quatre lettres. En ajoutant le C, \u00ab cacaba \u00bb s&rsquo;impose avec six lettres. Mais attention \u2014 \u00e9largir le r\u00e9pertoire ne garantit pas toujours un mot plus long : \u00ab cacaba \u00bb r\u00e9siste aussi \u00e0 l&rsquo;arriv\u00e9e du D, et \u00ab d\u00e9dicac\u00e9e \u00bb r\u00e8gne sans partage sur les niveaux 9, 10 et 11.<\/p>\n\n\n\n<p>Les vrais coups de th\u00e9\u00e2tre arrivent plus tard. \u00c0 13 lettres disponibles, le laur\u00e9at inattendu est \u00ab hamamelidac\u00e9e \u00bb \u2014 l&rsquo;hamam\u00e9lis, cet arbuste aux fleurs d&rsquo;hiver \u2014 avec 13 lettres. Et \u00e0 14 lettres, \u00ab magdal\u00e9nienne \u00bb lui fait jeu \u00e9gal.<br><br>Vous devriez trouver :<\/p>\n\n\n\n<p>2 (AB) : baba (4)<br>3 (ABC) : cacaba (6)<br>4 (ABCD) : cacaba (6)<br>5 (ABCDE) : abcedee (7)<br>6 (ABCDEF) : abcedee (7)<br>7 (ABCDEFG) : affeagee (8)<br>8 (ABCDEFGH) : debachage (9)<br>9 (ABCDEFGHI) : acidifiai (9)<br>10 (ABCDEFGHIJ) : acidifiai (9)<br>11 (ABCDEFGHIJK) : acidifiai (9)<br>12 (ABCDEFGHIJKL) : acidifiable (11)<br>13 (ABCDEFGHIJKLM) : hamamelidacee (13)<br>14 (ABCDEFGHIJKLMN) : academicienne (13)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def score(mot, n):\n    lettres_autorisees = set(\"abcdefghijklmnopqrstuvwxyz\"&#091;:n])\n    return all(c in lettres_autorisees for c in mot.lower())\n\nfor n in range(2, 15):\n    meilleur = \"\"\n    for i in range(2, 16):\n        with open(f\"dic{i}.txt\") as f:\n            mots = &#091;line.strip() for line in f if line.strip()]\n\n        candidats = &#091;m for m in mots if score(m, n)]\n        if candidats:\n            plus_long = max(candidats, key=len)\n            if len(plus_long) &gt; len(meilleur):\n                meilleur = plus_long\n\n    lettres = \"abcdefghijklmnopqrstuvwxyz\"&#091;:n].upper()\n    print(f\"{n} ({lettres}) : {meilleur.lower()} ({len(meilleur)})\")\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Mot avec le moins de lettres diff\u00e9rentes, pour chaque longueur<\/h3>\n\n\n\n<p>\u00c9crire long en variant peu : c&rsquo;est le d\u00e9fi de ce nouveau challenge. Pour chaque longueur de mot, on cherche celui qui se contente du plus petit alphabet personnel \u2014 autrement dit, celui dont les lettres se r\u00e9p\u00e8tent le plus.<\/p>\n\n\n\n<p>Avec deux lettres, \u00ab AA \u00bb n&rsquo;en utilise qu&rsquo;une seule. Avec trois, \u00ab MMM \u00bb fait pareil. Mais \u00e0 partir de quatre lettres, l&rsquo;exercice se complique : difficile de faire un vrai mot fran\u00e7ais avec une seule lettre r\u00e9p\u00e9t\u00e9e quatre fois. \u00ab ALLA \u00bb et \u00ab ERRER \u00bb s&rsquo;en tirent avec deux lettres distinctes seulement.<\/p>\n\n\n\n<p>La r\u00e9sistance dure longtemps : il faut atteindre les mots de onze lettres pour qu&rsquo;une quatri\u00e8me lettre s&rsquo;invite enfin dans le palmar\u00e8s. Et m\u00eame \u00e0 quinze lettres, \u00ab assassinassions \u00bb n&rsquo;en mobilise que cinq \u2014 une \u00e9conomie remarquable pour un mot aussi long.<\/p>\n\n\n\n<p>Vous devriez trouver :<\/p>\n\n\n\n<p>2 : AA (1)<br>3 : MMM (1)<br>4 : ALLA (2)<br>5 : ERRER (2)<br>6 : ETETEE (2)<br>7 : AMASSAS (3)<br>8 : GNANGNAN (3)<br>9 : BLABLABLA (3)<br>10 : RESSERREES (3)<br>11 : ASSAGISSAIS (4)<br>12 : ASSAINISSAIS (4)<br>13 : ARRERAGEASSES (5)<br>14 : EINSTEINIENNES (5)<br>15 : ASSASSINASSIONS (5)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def score(mot):\n    return len(set(mot))\n\nfor i in range(2, 16):\n    with open(f\"dic{i}.txt\") as f:\n        mots = &#091;line.strip() for line in f if line.strip()]\n\n    solution = min(mots, key=score)\n\n    print(f\"{i} : {solution} ({score(solution)})\")\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Voici quelques jeux de mots originaux inspir\u00e9s du fil de\u00a0Adam Aaronson\u00a0sur X. Le principe : appliquer des crit\u00e8res math\u00e9matiques ou visuels \u00e0 des listes de mots fran\u00e7ais class\u00e9s par longueur (de 2 \u00e0 15 lettres) pour trouver des champions inattendus. &hellip; <a href=\"https:\/\/blog.univ-angers.fr\/mathsinfo\/2026\/04\/18\/jouons-avec-les-dictionnaires\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4913,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-2081","post","type-post","status-publish","format-standard","hentry","category-twitter"],"_links":{"self":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/2081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/users\/4913"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/comments?post=2081"}],"version-history":[{"count":11,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/2081\/revisions"}],"predecessor-version":[{"id":2093,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/posts\/2081\/revisions\/2093"}],"wp:attachment":[{"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/media?parent=2081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/categories?post=2081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.univ-angers.fr\/mathsinfo\/wp-json\/wp\/v2\/tags?post=2081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}