<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Casse-Tetes | Dr. Goulu</title><link>https://drgoulu.com/tags/casse-tetes/</link><atom:link href="https://drgoulu.com/tags/casse-tetes/index.xml" rel="self" type="application/rss+xml"/><description>Casse-Tetes</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Tue, 03 Jun 2014 00:00:00 +0000</lastBuildDate><image><url>https://drgoulu.com/media/icon_hu_eee4a95885829ab2.png</url><title>Casse-Tetes</title><link>https://drgoulu.com/tags/casse-tetes/</link></image><item><title>Le cadran des trois neufs</title><link>https://drgoulu.com/2014/06/03/le-cadran-des-trois-neufs/</link><pubDate>Tue, 03 Jun 2014 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2014/06/03/le-cadran-des-trois-neufs/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="horloge3x9"
srcset="https://drgoulu.com/posts/2014/images/horloge3x9-294x300_hu_d13d6098a2514494.webp 294w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2014/images/horloge3x9-294x300_hu_d13d6098a2514494.webp"
width="294"
height="300"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;em&gt;(Mises à jour du 4+5 juin: Bravo à ced, Danakh et Groug dont les commentaires m&amp;rsquo;ont convaincu que j&amp;rsquo;aurais du
&amp;hellip; Je me vois contraint de mettre à jour l&amp;rsquo;article avec leurs découvertes. Et j&amp;rsquo;en profite pour tester 
 pour le rendu des formules. C&amp;rsquo;est nettement plus joli qu&amp;rsquo;avant, non ?)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Emmanuel m&amp;rsquo;a envoyé la photo ci-contre en me demandant si on peut graduer ainsi un cadran d&amp;rsquo;horloge avec d&amp;rsquo;autres chiffres que le 9.&lt;/p&gt;
&lt;p&gt;Ce qu&amp;rsquo;il y a d&amp;rsquo;assez fort, c&amp;rsquo;est que chaque heure du cadran est obtenue avec trois 9, sauf le 1 qui en n&amp;rsquo;en utilise que deux. Pourtant il existe une solution avec trois 9 ( &lt;/p&gt;
\[mathjax\]&lt;p&gt;\(1=9^{9-9}\) ), donc on va considérer considérer que le jeu consiste à obtenir les 12 heures du cadran en utilisant trois fois les mêmes chiffres, et les opérations suivantes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les 4 opérations de base&lt;/li&gt;
&lt;li&gt;la racine carré et la racine x-ième&lt;/li&gt;
&lt;li&gt;la
(il y a d&amp;rsquo;ailleurs une erreur : \(5= \sqrt{9}!-9/9\) et pas \(\sqrt{9!}-9/9\) comme sur la photo)&lt;/li&gt;
&lt;li&gt;le
noté \(\overline{.x}\) et valant x/9. Et oui,  \(\overline{.9} = 1\) (voir
)&lt;/li&gt;
&lt;li&gt;la concaténation. C&amp;rsquo;est un peu tiré par les cheveux mais on accepte xx = 11*x&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Avec ceci on peut mettre au point quelques recettes pour obtenir certaines &amp;ldquo;heures&amp;rdquo; facilement:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;\(1 = x^{x-x}\)&lt;/li&gt;
&lt;li&gt;\(2 = (x+x)/x\)&lt;/li&gt;
&lt;li&gt;\(x-1 = x-x/x\)&lt;/li&gt;
&lt;li&gt;\(x = \sqrt
\[x\]{x^x}\), parmi plusieurs autres possibilités&lt;/li&gt;
&lt;li&gt;\(x+1 = x+x/x\)&lt;/li&gt;
&lt;li&gt;\(11 = xx/x\), où xx désigne la concaténation de deux x&lt;/li&gt;
&lt;li&gt;\(3x = x+x+x\)&lt;/li&gt;
&lt;li&gt;\(9-x = x/\overline{.x} -x\)&lt;/li&gt;
&lt;li&gt;\(x+3 = x+\sqrt{x/\overline{.x}}\)&lt;/li&gt;
&lt;li&gt;\(x-3 = x-\sqrt{x/\overline{.x}}\) (trouvé par ced&amp;hellip;)&lt;/li&gt;
&lt;li&gt;\(9 = \sqrt{x*x}/\overline{.x}\) (bravo ced !)&lt;/li&gt;
&lt;li&gt;\(2x = x+\sqrt{x*x}\) (encore ced !)&lt;/li&gt;
&lt;li&gt;\(3 =  \sqrt{\sqrt{x*x}/\overline{.x}}\) (bien vu Danakh)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Voici le tableau indiquant les heures que je suis parvenu les commentateurs et moi-même avons pu définir avec trois et uniquement trois utilisations de chaque chiffre. Les lettres entre parenthèses rapportent aux recettes ci-dessus et les formules sont les solutions &amp;ldquo;hors-recettes&amp;rdquo; que j&amp;rsquo;ai trouvées :&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;x/heure&lt;/th&gt;
&lt;th&gt;1&lt;/th&gt;
&lt;th&gt;2&lt;/th&gt;
&lt;th&gt;3&lt;/th&gt;
&lt;th&gt;4&lt;/th&gt;
&lt;th&gt;5&lt;/th&gt;
&lt;th&gt;6&lt;/th&gt;
&lt;th&gt;7&lt;/th&gt;
&lt;th&gt;8&lt;/th&gt;
&lt;th&gt;9&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;(a)&lt;/td&gt;
&lt;td&gt;(a)&lt;/td&gt;
&lt;td&gt;(a)&lt;/td&gt;
&lt;td&gt;(a)&lt;/td&gt;
&lt;td&gt;(a)&lt;/td&gt;
&lt;td&gt;(a)&lt;/td&gt;
&lt;td&gt;(a)&lt;/td&gt;
&lt;td&gt;(a)&lt;/td&gt;
&lt;td&gt;(a)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;(b)&lt;/td&gt;
&lt;td&gt;(b)&lt;/td&gt;
&lt;td&gt;(b)&lt;/td&gt;
&lt;td&gt;(b)&lt;/td&gt;
&lt;td&gt;(b)&lt;/td&gt;
&lt;td&gt;(b)&lt;/td&gt;
&lt;td&gt;(b)&lt;/td&gt;
&lt;td&gt;(b)&lt;/td&gt;
&lt;td&gt;(b)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;(g)&lt;/td&gt;
&lt;td&gt;(e)&lt;/td&gt;
&lt;td&gt;(d)&lt;/td&gt;
&lt;td&gt;(c)&lt;/td&gt;
&lt;td&gt;(m)&lt;/td&gt;
&lt;td&gt;(h)&lt;/td&gt;
&lt;td&gt;(m)&lt;/td&gt;
&lt;td&gt;(m)&lt;/td&gt;
&lt;td&gt;\(\sqrt{9}+9-9\)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;(i)&lt;/td&gt;
&lt;td&gt;(l)&lt;/td&gt;
&lt;td&gt;(e)&lt;/td&gt;
&lt;td&gt;(d)&lt;/td&gt;
&lt;td&gt;(c)&lt;/td&gt;
&lt;td&gt;\(\sqrt{6*6}*\overline{.6}\)&lt;/td&gt;
&lt;td&gt;(j)&lt;/td&gt;
&lt;td&gt;\(8-\sqrt{8+8}\)&lt;/td&gt;
&lt;td&gt;\(\sqrt{9}+9/9\)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;\(\sqrt{1/\overline{.1}}! -1\)&lt;/td&gt;
&lt;td&gt; (i)&lt;/td&gt;
&lt;td&gt;\(3!-3/3\)&lt;/td&gt;
&lt;td&gt;(e)&lt;/td&gt;
&lt;td&gt;(d)&lt;/td&gt;
&lt;td&gt;(c)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;(j)&lt;/td&gt;
&lt;td&gt;\(\sqrt{9}!-9/9\)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;\((1+1+1)!\)&lt;/td&gt;
&lt;td&gt;(g)&lt;/td&gt;
&lt;td&gt;\(3!+3-3\)&lt;/td&gt;
&lt;td&gt;\((4-4/4)!\)&lt;/td&gt;
&lt;td&gt;(e)&lt;/td&gt;
&lt;td&gt;(d)&lt;/td&gt;
&lt;td&gt;(c)&lt;/td&gt;
&lt;td&gt;\(8-\sqrt{\sqrt{8+8}}\)&lt;/td&gt;
&lt;td&gt;(j)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt; (h)&lt;/td&gt;
&lt;td&gt;\(3!+3/3\)&lt;/td&gt;
&lt;td&gt;\((4!+4)/4\)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;(e)&lt;/td&gt;
&lt;td&gt;(d)&lt;/td&gt;
&lt;td&gt;(c)&lt;/td&gt;
&lt;td&gt;\(9-\sqrt{9}+\overline{.9}\)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;(h)&lt;/td&gt;
&lt;td&gt;\(2*2*2\)&lt;/td&gt;
&lt;td&gt;\((3!/3)^3\)&lt;/td&gt;
&lt;td&gt;\(4!-4*4\)&lt;/td&gt;
&lt;td&gt;(i)&lt;/td&gt;
&lt;td&gt;\((6+6)*\overline{.6}\)&lt;/td&gt;
&lt;td&gt;(e)&lt;/td&gt;
&lt;td&gt;(d)&lt;/td&gt;
&lt;td&gt;(c)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;(k)&lt;/td&gt;
&lt;td&gt;(k)&lt;/td&gt;
&lt;td&gt;(g)&lt;/td&gt;
&lt;td&gt;(k)&lt;/td&gt;
&lt;td&gt;(k)&lt;/td&gt;
&lt;td&gt;(k)&lt;/td&gt;
&lt;td&gt;(k)&lt;/td&gt;
&lt;td&gt;(e)&lt;/td&gt;
&lt;td&gt;(d)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;\(11-1\)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;\(4+4+\sqrt{4}\)&lt;/td&gt;
&lt;td&gt;(l)&lt;/td&gt;
&lt;td&gt;\(6+6*\overline{.6}\)&lt;/td&gt;
&lt;td&gt;(i)&lt;/td&gt;
&lt;td&gt;\(8+\sqrt{\sqrt{8+8}}\)&lt;/td&gt;
&lt;td&gt;(e)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;(f)&lt;/td&gt;
&lt;td&gt;(f)&lt;/td&gt;
&lt;td&gt;(f)&lt;/td&gt;
&lt;td&gt;(f)&lt;/td&gt;
&lt;td&gt;(f)&lt;/td&gt;
&lt;td&gt;(f)&lt;/td&gt;
&lt;td&gt;(f)&lt;/td&gt;
&lt;td&gt;(f)&lt;/td&gt;
&lt;td&gt;(f)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;\(11+1\)&lt;/td&gt;
&lt;td&gt;\((2+2)!/2\)&lt;/td&gt;
&lt;td&gt;\(3*3+3\)&lt;/td&gt;
&lt;td&gt;(g)&lt;/td&gt;
&lt;td&gt;\(5!/(5+5)\)&lt;/td&gt;
&lt;td&gt;(l)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;\(8+\sqrt{8+8}\)&lt;/td&gt;
&lt;td&gt;\(9+9/\sqrt{9}\)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Grâce aux contributions de géniaux et persévérants commentateurs, de nombreuses cellules ont pu être remplies:&lt;/p&gt;
&lt;p&gt;En remplaçant un seul chiffre par deux grâce à \(x = \sqrt{x*x}\) comme remarqué par ced, on peut remplir la ligne 9 et plusieurs autres cases en utilisant trois répétitions de x au lieu de deux. Et Danakh a complété la ligne du 3 en ajoutant une racine&amp;hellip;&lt;/p&gt;
&lt;p&gt;Donc à part le cadran du 9 les seuls autres cadrans possibles avec 3 répétitions sont:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le cadran du 4. El Jj avait d&amp;rsquo;ailleurs 
 il y a longtemps.&lt;/li&gt;
&lt;li&gt;ceux du 1 et du 6, obtenus grâce à la sagacité de Danakh. Bravo² !&lt;/li&gt;
&lt;li&gt;celui du 8, brillamment terminé par Groug grâce à un
de plus. Bravo !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En autorisant quatre répétitions, on peut:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;remplir les lignes 8 et 10 grâce aux recettes \(8 = x/\overline{.x} - x/x\)  et \(10 = x/\overline{.x} + x/x\), ce qui complète le cadran du 2 et celui du 3&lt;/li&gt;
&lt;li&gt;et celui du 5 avec 7 = 5+(5+5)/5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il faut quand même qu&amp;rsquo;on vous laisse un os à ronger&amp;hellip; Combien de répétitions faut-il pour le cadran du 7 ?&lt;/p&gt;</description></item><item><title>Bits en vrac</title><link>https://drgoulu.com/2014/04/09/bits-en-vrac/</link><pubDate>Wed, 09 Apr 2014 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2014/04/09/bits-en-vrac/</guid><description>&lt;p&gt;Quelques découvertes informatiques en vrac&lt;/p&gt;
&lt;h3 id="les-formulaires-google-drive"&gt;Les formulaires Google Drive&lt;/h3&gt;
&lt;p&gt;Le 
 m&amp;rsquo;a permis d&amp;rsquo;expérimenter la puissance et la facilité d&amp;rsquo;utilisation des
 . C&amp;rsquo;est simplement génial :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;dans
, on crée un document de type formulaire&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;on se retrouve dans un éditeur permettant de composer le formulaire. On peut définir le type de chaque champ : texte, choix multiple, cases à cocher, échelle d&amp;rsquo;évaluation, tout y est. On peut ajouter des règles de validation et des actions à effectuer en fonction des réponses&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 480px; width: 100%;"&gt;&lt;a href="https://drgoulu.com/wp-content/uploads/2014/04/form-editor1.png" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2014/images/form-editor1_hu_a9cf01977cab59c3.webp" srcset="https://drgoulu.com/posts/2014/images/form-editor1_hu_a9cf01977cab59c3.webp 320w, https://drgoulu.com/posts/2014/images/form-editor1_hu_2c5aa1c6d7189fc8.webp 480w, https://drgoulu.com/posts/2014/images/form-editor1_hu_f1e314e3652ae458.webp 662w" sizes="(max-width: 640px) 100vw, 480px" alt="Editeur de Formulaire Google Drive" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Editeur de Formulaire Google Drive&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En cliquant le bouton &amp;ldquo;afficher le formulaire en ligne&amp;rdquo; on peut voir à quoi ça ressemble pour les utilisateurs et même tester le système, car la collecte des réponses est immédiate : rien à faire de particulier !&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lorsque le formulaire  est prêt, il suffit d&amp;rsquo;envoyer le lien disponible par &amp;ldquo;Envoyer le formulaire&amp;rdquo; à des personnes choisies, ou d&amp;rsquo;intégrer la page sur un site web dans un &lt;iframe&gt;. Plusieurs blogs du C@fé des sciences l&amp;rsquo;ont même fait simultanément sans aucun problème car le formulaire n&amp;rsquo;existe en réalité (virtuelle&amp;hellip;) que chez Google.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Les réponses sont automatiquement collectées dans un document &amp;ldquo;tableur&amp;rdquo; sur Google Drive : une ligne est créée pour chaque formulaire rempli, chaque colonne correspondant à un champ. Notez la colonne &amp;ldquo;horodateur&amp;rdquo; remplie automatiquement, bien utile.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 480px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2014/images/googleform1_hu_a6abe314f2fb0325.webp" srcset="https://drgoulu.com/posts/2014/images/googleform1_hu_a6abe314f2fb0325.webp 320w, https://drgoulu.com/posts/2014/images/googleform1_hu_8d5bf332d6b672ce.webp 480w, https://drgoulu.com/posts/2014/images/googleform1_hu_f13ef0042a2a4867.webp 600w" sizes="(max-width: 640px) 100vw, 480px" alt="Table des résultats" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Table des résultats&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Ce que j&amp;rsquo;ai trouvé assez impressionnant est que l&amp;rsquo;on peut modifier le tableau sans perturber les votes suivants. Apparemment chaque champ du formulaire est attaché à une colonne par un lien invisible, mais solide : même si on ajoute ou déplace des colonnes, les réponses suivantes restent cohérentes avec les réponses précédentes. Pour le quiz, j&amp;rsquo;ai ajouté la ligne 2 avec les bonnes réponses ainsi que la colonne D Score. Notez au passage la  géniale formule qui compte le nombre de réponses correctes avec 
 et sumproduct. Elle n&amp;rsquo;est pas de moi, et il parait qu&amp;rsquo;elle est possible aussi en Excel&amp;hellip;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;figure class="alignright" style="max-width: 300px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2014/images/stats_hu_81fae1c181f07c07.webp" srcset="https://drgoulu.com/posts/2014/images/stats_hu_81fae1c181f07c07.webp 320w, https://drgoulu.com/posts/2014/images/stats_hu_64ee39dadb93f1b2.webp 480w, https://drgoulu.com/posts/2014/images/stats_hu_4f036da3e04e65df.webp 600w" sizes="(max-width: 640px) 100vw, 300px" alt="stats" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;résumé des réponses&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Une petite dernière pour la route : dans le menu &amp;ldquo;Formulaire&amp;rdquo; on peut &amp;ldquo;afficher le résumé des réponses&amp;rdquo; qui présente les résultats sous une forme graphique qui peut être bien utile.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Les formulaires Google Drive permettent de réaliser facilement des sondages, quiz et concours divers avec toute la puissance et la sécurité (&amp;hellip;) de l&amp;rsquo;infrastructure Google. Ca fait déjà des
dans le C@fé &amp;hellip;&lt;/p&gt;
&lt;h3 id="curation-v30"&gt;Curation V.3.0‎&lt;/h3&gt;
&lt;p&gt;Rien à faire, il n&amp;rsquo;y a toujours pas mieux pour suivre les sites intéressants que les
. J&amp;rsquo;ai longtemps utilisé
avec lequel j&amp;rsquo;ai commencé à faire de la
. En effet, en cochant simplement les articles que je trouvais intéressants, Google Reader les agrégeait dans un flux RSS &amp;ldquo;de sortie&amp;rdquo; que je pouvais publier sur
.&lt;/p&gt;
&lt;p&gt;Puis Google a annoncé la fermeture de Reader (toujours incompréhensible pour moi) et j&amp;rsquo;ai utilisé
. C&amp;rsquo;était une bonne idée : Scoop.it permet d&amp;rsquo;agréger non seulement des flux RSS, mais aussi des tweets, le contenu de pages Facebook et de recherches Google. On peut créer ainsi plusieurs &amp;ldquo;topics&amp;rdquo; thématiques, et de jolis widgets comme celui ci-contre à droite. Mais le point fort de Scoop.it, c&amp;rsquo;est ses possibilités de partage : chaque contenu &amp;ldquo;scoopé&amp;rdquo; peut être partagé automatiquement sur Twitter, Facebook, Gogle+ et Tumblr, entre autres.&lt;/p&gt;
&lt;p&gt;Scoop.it, c&amp;rsquo;est vraiment bien, mais &amp;hellip; il y a un problème rédhibitoire : les liens du contenu partagé sont modifiés pour conduire les visiteurs sur la page Scoop.it du topic, et pas directement vers l&amp;rsquo;article original. Ceci a trois conséquences que je trouve gênantes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La première n&amp;rsquo;est pas trop grave : les lecteurs doivent cliquer deux fois pour arriver à l&amp;rsquo;article qui les intéresse, une fois sur la page où ils voient le contenu partagé, puis une seconde fois sur la page Scoop.it.&lt;/li&gt;
&lt;li&gt;La seconde fausse les analyses de trafic, qui semble provenir de Scoop.it plutôt que du site de partage. Ainsi par exemple mon site a accueilli plus de 2000 visiteurs passés par Scoop.it en un an sans qu&amp;rsquo;il me soit possible de déterminer où ces 2000 personnes ont initialement découvert l&amp;rsquo;article qui les intéressait.&lt;/li&gt;
&lt;li&gt;La troisième touche le droit d&amp;rsquo;auteur : les outils de partage qui changent les liens diffusent le contenu d&amp;rsquo;autrui en coupant le lien vers la source, qui est parfois le seul élément identifiant l&amp;rsquo;auteur. Je me suis soudain aperçu que
 &amp;ldquo;rebloguait&amp;rdquo; automatiquement les articles que je trouvais intéressants, parfois en me les attribuant implicitement puisqu&amp;rsquo;il n&amp;rsquo;y avait plus de mention du site original.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Je me suis donc mis en chasse de nouveaux outils de curation, et après quelques essais j&amp;rsquo;ai choisi le &amp;ldquo;trio de la curation V.3&amp;rdquo; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
 comme agrégateur de flux. Il offre grosso-modo les fonctionnalités de Google Reader,  une
, plus une
 (en fait un plugin d&amp;rsquo;un agrégateur plus général). Chaque jours je parcours une centaine d&amp;rsquo;articles en sautant d&amp;rsquo;un à l&amp;rsquo;autre en pressant la touche
\[j\], et si je le trouve intéressant je le lis et je presse
\[s\]comme &amp;ldquo;star&amp;rdquo;. Ca le marque comme favori et l&amp;rsquo;ajoute à mon
.&lt;/li&gt;
&lt;li&gt;
Je pourrais utiliser directement CommaFeed pour partager le contenu sur Facebook, Twitter, Google+ et autres (mais pas Tumblr). Mais surtout, il me faudrait le faire manuellement : 6 ou 8 clicks de plus, c&amp;rsquo;est trop. Alors j&amp;rsquo;ai utilisé
, un service qui permet d&amp;rsquo;automatiser des tâches internet en créant des &amp;ldquo;recettes&amp;rdquo; de la forme If This Then That . J&amp;rsquo;ai ainsi créé des &amp;ldquo;recettes&amp;rdquo; qui partagent automatiquement le contenu de mon flux de sortie vers mes pages Facebook, Google+, App.net et Tumblr. Automatiquement. Rien d&amp;rsquo;autre à faire :-)  (Pour Twitter j&amp;rsquo;hésite encore&amp;hellip;)&lt;/li&gt;
&lt;li&gt;Et j&amp;rsquo;utilise toujours Scoop.it pour atteindre les utilisateurs de cette plateforme et profiter des beaux widgets, mais je n&amp;rsquo;utilise plus les outils de partage. En attendant qu&amp;rsquo;IFTTT permette de &amp;ldquo;scooper&amp;rdquo; automatiquement, j&amp;rsquo;utilise le flux de sortie comme unique source dans Scoop.it et je &amp;ldquo;scoope&amp;rdquo; à la main tout ce que j&amp;rsquo;ai préalablement sélectionné dans CommaFeed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tout ça ne me demande en définitive pas plus d&amp;rsquo;efforts que de tourner les pages d&amp;rsquo;un journal en papier, et je peux me concentrer sur la lecture tout en gardant une trace dont vous pouvez profiter où vous le souhaitez.&lt;/p&gt;
&lt;h3 id="networkx"&gt;NetworkX&lt;/h3&gt;
&lt;p&gt;
 est une librairie Python permettant de représenter et traiter des problèmes de graphes. Je l&amp;rsquo;utilise professionnellement assez intensivement ces temps-ci pour un
, mais l&amp;rsquo;autre jour il m&amp;rsquo;a permis de résoudre le
 du
 en quelques lignes seulement. En fait la plupart servent à lire le fichier des données, puis la partie intéressante tient en une seule ligne :&lt;/p&gt;
\[source lang="Python"\]&lt;p&gt;print G.size(weight=&amp;lsquo;weight&amp;rsquo;) - minimum_spanning_tree(G, weight=&amp;lsquo;weight&amp;rsquo;).size(weight=&amp;lsquo;weight&amp;rsquo;)&lt;/p&gt;
\[/source\]&lt;p&gt;Fort non ? Hélas il me semble que peu de problèmes du Project Euler concernent les graphes, donc je ne vais pas pouvoir améliorer mon score rapidement &amp;hellip;&lt;/p&gt;
&lt;h3 id="2048"&gt;2048&lt;/h3&gt;
&lt;p&gt;
Cet article serait paru il y a trois jours si je n&amp;rsquo;étais pas tombé sur
, le jeu addictif du moment. C&amp;rsquo;est un jeu tellement simple qu&amp;rsquo;il aurait du être inventé avant Pac-Man. Et on voit tout de suite comment faire : placer les puissances de 2 les unes à côté des autres pour former une chaîne croissante et propager ainsi les sommes pour arriver à former enfin, après 1024 coups au minimum, la tant convoitée pièce 2048. Il m&amp;rsquo;a fallu 3 jours. Enfin 3 soirs. 3 nuits&amp;hellip;&lt;/p&gt;
&lt;p&gt;A un certain moment j&amp;rsquo;en ai eu marre et voulu utiliser la bonne vieille méthode pour résoudre les problèmes compliqués : programmer. Mais Matt Overlan a été plus rapide et efficace :
 et est très instructif. Je crois que c&amp;rsquo;est la première fois de ma vie qu&amp;rsquo;un ordinateur m&amp;rsquo;apprend à résoudre un casse-tête plutôt que l&amp;rsquo;inverse. Peu après avoir observé le solveur parvenir au 2048, j&amp;rsquo;ai appris à dominer ma tentation d&amp;rsquo;additionner coûte que coûte les nombres les plus élevés et à conserver des lignes ou des colonnes de 4 cases &amp;ldquo;bloquées&amp;rdquo;, et j&amp;rsquo;ai gagné.&lt;/p&gt;
&lt;p&gt;Après certains passent au 
 voire au 
, mais je crois que je vais plutôt attaquer la version &amp;ldquo;
&amp;rdquo; de Valentine. Un peu déroutant de prime abord, mais j&amp;rsquo;aime beaucoup l&amp;rsquo;idée un peu holiste qu&amp;rsquo;il y a là derrière&amp;hellip; Bravo !&lt;/p&gt;</description></item><item><title>Le postier chinois de Königsberg</title><link>https://drgoulu.com/2013/11/22/le-postier-chinois-de-konigsberg/</link><pubDate>Fri, 22 Nov 2013 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2013/11/22/le-postier-chinois-de-konigsberg/</guid><description>&lt;h3 id="les-ponts-de-königsberg"&gt;Les ponts de Königsberg&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;(Ce paragraphe d&amp;rsquo;introduction est une traduction de l&amp;rsquo;article &amp;ldquo;
&amp;rdquo; paru sur Plus Maths)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Au 18ème siècle, la ville que nous connaissons sous le nom de Kaliningrad s&amp;rsquo;appelait Königsberg et se trouvait en Prusse. Comme beaucoup d&amp;rsquo;autres grandes villes, Königsberg se trouve sur une rivière, la Pregel. Elle comportait deux îles et il y avait sept ponts reliant les différentes terres. Un fameux casse-tête de l&amp;rsquo;époque était de trouver un chemin à travers la ville qui passait une seule fois par chaque pont. Plusieurs personnes disaient avoir trouver un tel chemin, mais lorsqu&amp;rsquo;on leur demandait de le reproduire, personne n&amp;rsquo;y arrivait. En 1735 le mathématicien suisse 
 expliqua pourquoi : il démontra qu&amp;rsquo;un tel chemin n&amp;rsquo;existait pas.&lt;/p&gt;
&lt;p&gt;La solution d&amp;rsquo;Euler est étonnamment simple, une fois que vous considérez le problème sous le bon angle. Le truc est d&amp;rsquo;éliminer toute information inutile. Le chemin parcouru sur terre n&amp;rsquo;a pas d&amp;rsquo;importance. La forme de ces terres n&amp;rsquo;a pas d’importance, ni le trajet de la rivière ou la forme des ponts. Donc vous pouvez simplement représenter chaque terre par un point et chaque pont par une ligne liant deux points. Vous n&amp;rsquo;avez pas du tout besoin de respecter la géographie : aussi longtemps que vous ne modifiez pas la connectivité des points, lequel est connecté auxquels, vous pouvez déformer votre dessin autant que vous voulez sans changer le problème.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 677px; width: 100%;"&gt;&lt;a href="https://fr.wikipedia.org/wiki/Probl%C3%A8me_des_sept_ponts_de_K%C3%B6nigsberg" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/ed585263c3bf0d48232cff6a3fd994f1_hu_fdec267c6b269e63.webp" srcset="https://drgoulu.com/posts/2013/images/ed585263c3bf0d48232cff6a3fd994f1_hu_fdec267c6b269e63.webp 320w, https://drgoulu.com/posts/2013/images/ed585263c3bf0d48232cff6a3fd994f1_hu_90ba7eb01d921104.webp 480w, https://drgoulu.com/posts/2013/images/ed585263c3bf0d48232cff6a3fd994f1_hu_3f5596c9107fb13c.webp 677w" sizes="(max-width: 640px) 100vw, 677px" alt="Transformation du problème (source : Wikipédia)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Transformation du problème (source : Wikipédia)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Une fois que vous avez représenté le problème de cette façon, ses caractéristiques sont bien plus simples à voir. Après avoir un peu joué avec, vous constaterez ceci : en arrivant sur un point, et à moins que ce soit la dernière étape de votre chemin, vous devrez repartir par une ligne différente de celle d&amp;rsquo;arrivée puisque c&amp;rsquo;est la règle du jeu. Ca signifie que chaque point à l&amp;rsquo;exception du départ et de l&amp;rsquo;arrivée de votre chemin doit avoir un nombre pair de lignes le connectant aux autres : pour chaque lien entrant il doit y en avoir un pour en repartir.&lt;/p&gt;
&lt;p&gt;Donc pour qu&amp;rsquo;un chemin qui passe une et une seule fois par chaque ligne existe, il ne doit pas y avoir plus de deux points avec un nombre impair de lignes connectées. En fait il ne peut y avoir que deux points impairs ou pas du tout. Dans le premier cas les deux points impairs sont forcément les points de départ et d&amp;rsquo;arrivée, alors que dans le second, le chemin est un circuit fermé. Or dans le problème de Königsberg, tous les points ont un nombre impair de connexions, donc un chemin ne passant qu&amp;rsquo;une seule fois par chaque pont est impossible.&lt;/p&gt;
&lt;p&gt;Ce résultat d&amp;rsquo;Euler marque le début de la 
, l&amp;rsquo;étude de réseaux de points connectés par des liens. Euler a d&amp;rsquo;ailleurs aussi démontré que si la condition mentionnée plus haut est respectée, à savoir que le nombre de points avec un nombre impairs de liens est soit deux soit zéro, alors il existe toujours un chemin qui passe par chaque lien exactement une fois.&lt;/p&gt;
&lt;h3 id="voyageur-de-commerce-et-postier-chinois"&gt;Voyageur de commerce et postier chinois&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;(à partir de là c&amp;rsquo;est du pur Dr. Goulu)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A part dans les casse-tête, on trouve très souvent en pratique des problèmes pouvant être résolus grâce à la théorie des graphes. Par exemple, 
 avec le 
 (TSP), j&amp;rsquo;avais eu l&amp;rsquo;occasion de le rencontrer dans l&amp;rsquo;optimisation des mouvements d&amp;rsquo;une machine à percer les circuits électroniques.&lt;/p&gt;
&lt;p&gt;Dans le TSP, le but est de trouver le circuit (fermé) dit &amp;ldquo;
&amp;rdquo; passant par tous les points d&amp;rsquo;un graphe, et dont le coût soit minimum, en pratique celui dans lequel la distance totale à parcourir (ou mieux encore le temps nécessaire) est minimum. A Königsberg, un voyageur de commerce aurait l&amp;rsquo;embarras du choix d&amp;rsquo;un circuit lui permettant de visiter ses clients sur les 4 terres, mais s&amp;rsquo;il devait s&amp;rsquo;acquitter de péages différents selon les ponts, un petit calcul lui serait nécessaire. Pour des problèmes de taille réelle, trouver le minimum absolu est horriblement difficile voire impossible, mais il existe des méthodes itératives qui convergent assez rapidement vers des solutions raisonnablement proches de l&amp;rsquo;optimum.&lt;/p&gt;
&lt;p&gt;&lt;figure class="aligncenter" style="max-width: 640px; width: 100%;"&gt;&lt;a href="http://www.sciencedirect.com/science/article/pii/S0924013604006727" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2013/images/d7f65bac716c02c91473d8bc005d8224_hu_aa4022c7ff6d0ead.webp" srcset="https://drgoulu.com/posts/2013/images/d7f65bac716c02c91473d8bc005d8224_hu_aa4022c7ff6d0ead.webp 320w, https://drgoulu.com/posts/2013/images/d7f65bac716c02c91473d8bc005d8224_hu_ed143e875e988ae4.webp 480w, https://drgoulu.com/posts/2013/images/d7f65bac716c02c91473d8bc005d8224_hu_78dd70128190f388.webp 640w" sizes="(max-width: 640px) 100vw, 640px" alt="Etapes de l&amp;#39;optimisation TSP du trajets d&amp;#39;une perceuse de circuits imprimés [[1]](#ref-1)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Etapes de l&amp;rsquo;optimisation TSP du trajets d&amp;rsquo;une perceuse de circuits imprimés&lt;/figcaption&gt;&lt;/figure&gt;
Plus récemment j&amp;rsquo;ai rencontré le 
, ainsi nommé parce qu&amp;rsquo;il s&amp;rsquo;agit d&amp;rsquo;un problème que connaissent tous les postiers, mais qui a été étudié mathématiquement par un chinois, Mei-Ko Kwan en 1962. Il s&amp;rsquo;agit de trouver le plus court circuit qui permette à un postier de parcourir toutes les rues de sa zone au moins une fois. Il est clair que s&amp;rsquo;il existe un
 permettant de ne passer qu&amp;rsquo;une et une seule fois par chaque ligne, ce circuit serait en même temps la solution du postier chinois. Mais quand ce n&amp;rsquo;est pas le cas, il faut forcément parcourir plusieurs fois certaines rues.&lt;/p&gt;
&lt;p&gt;Si le postier doit desservir des échoppes situées sur chacun des ponts de Königsberg, combien de traversées de ponts au total sont nécessaires à sa tournée? Arrive-t-on à réduire ce nombre en employant deux postiers? Et si on construisait un nouveau pont? (Pas deux, ce serait trop facile.)&lt;/p&gt;
&lt;p&gt;En gros j&amp;rsquo;ai ce problème avec environ 200 rues dispersées dans plusieurs villages, plusieurs postiers, et pour couronner le tout il y a du vent : il est plus facile de parcourir les rues dans un sens que dans l&amp;rsquo;autre. Mais avec Python,
 et un peu de lecture
, je devrais m&amp;rsquo;en sortir&amp;hellip;&lt;/p&gt;
&lt;h3 id="références"&gt;Références&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;E. Aoyama, T. Hirogaki, T. Katayama, and N. Hashimoto, &amp;ldquo;Optimizing drilling conditions in printed circuit board by considering hole quality&amp;rdquo; J. Mater. Process. Technol., vol. 155, pp. 1544–1550, 2004.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;E. Benavent, A. Corberan, I. Plana, and J. M. Sanchis, &amp;ldquo;Min-Max k-vehicles windy rural postman problem&amp;rdquo; Networks, vol. 54, no. 4, pp. 216–226, Dec. 2009
\[[pdf](http://www.uv.es/sestio/TechRep/tr09-07.pdf)\]&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Grötschel, M., &amp;amp; Yuan, Y.&amp;ldquo;Euler, Mei-Ko Kwan, Königsberg, and a Chinese Postman&amp;rdquo;, 2012 
\[[pdf](http://www.math.uiuc.edu/documenta/vol-ismp/16_groetschel-martin-yuan-ya-xiang.pdf)\]&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;Grötschel, M. (Ed.) &amp;ldquo;Optimization Stories (Extra Volume)&amp;rdquo;, 2012, 21st International Symposium on Mathematical Programmng (p. 460). Berlin: Documenta Mathematica: Journal der Deutschen Mathematiker-Vereinigung.  ISBN 3936609586 / 978-3936609585 (Excellent recueil d&amp;rsquo;articles sur l&amp;rsquo;histoire de la théorie des graphes) 
\[[pdf](https://www.zib.de/groetschel/publications/OptimizationStories.pdf)\]&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Comment dire 33 avec 3 cubes ?</title><link>https://drgoulu.com/2012/06/20/comment-dire-33-avec-3-cubes/</link><pubDate>Wed, 20 Jun 2012 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2012/06/20/comment-dire-33-avec-3-cubes/</guid><description>&lt;p&gt;Le gars qui m&amp;rsquo;a pourri ma dernière soirée du printemps s&amp;rsquo;appelle Mike Croucher.
 il a négligemment posé le problème suivant:&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Il est possible d&amp;rsquo;écrire beaucoup d&amp;rsquo;entiers comme la somme des cubes de 3 entiers, par exemple: 99 = (-5)&lt;sup&gt;3 + 2&lt;/sup&gt;3+ 6^3 Un exemple plus compliqué est: 91 = (-67134)&lt;sup&gt;3 + (-65453)&lt;sup&gt;3+(83538)&lt;sup&gt;3 Votre tâche est de trouver les entiers x,y, et z tels que: 33 = x&lt;/sup&gt;3 + y&lt;/sup&gt;3 + z&lt;/sup&gt;3&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Comme j&amp;rsquo;ai bien vu que la solution pour 91 impliquait de grands entiers, je me suis dit que 33 demanderait probablement des nombres encore plus grands, mais j&amp;rsquo;ai quand même vite pondu le programme Python suivant pour voir:&lt;/p&gt;
\[sourcecode lang="Python"\]&lt;p&gt; res={} #dictionary of results def store(n,x,y,z): if n&amp;gt;=0 and n&amp;lt;100 and n not in res: res&lt;/p&gt;
\[n\]&lt;p&gt;=(x,y,z) print n,res&lt;/p&gt;
\[n\]&lt;p&gt;cube=[] x=0 while True: x3=x*x*x cube.append(x3) for y in range(x+1): y3=cube&lt;/p&gt;
\[y\]&lt;p&gt; for z in range(x+1): z3=cube&lt;/p&gt;
\[z\]&lt;p&gt; store(x3+y3+z3,x,y,z) store(x3-y3+z3,x,-y,z) store(x3+y3-z3,x,y,-z) store(x3-y3-z3,x,-y,-z) store(-x3+y3+z3,-x,y,z) store(-x3-y3+z3,-x,-y,z) store(-x3+y3-z3,-x,y,-z) # store(-x3-y3-z3,-x,-y,-z) #you&amp;rsquo;re right Neamar, it&amp;rsquo;s useless x+=1 if x==50: #show &amp;ldquo;small&amp;rdquo; results for n in range(100): if n in res: print n,res&lt;/p&gt;
\[n\]&lt;p&gt; else: print n,&amp;rsquo;?&amp;rsquo; &lt;/p&gt;
\[/sourcecode\]&lt;p&gt;En moins d&amp;rsquo;une seconde il trouve les 69 des 100 premiers entiers qui sont des sommes de cubes d&amp;rsquo;entiers inférieurs à 100. Le plus &amp;ldquo;compliqué&amp;rdquo; est 78=-55³+53³+26³ .&lt;/p&gt;
&lt;p&gt;Ensuite il mouline pendant des heures pour trouver 51=-796³+659³+602³ et 16=1626³-1609³-511³, et pendant ce temps j&amp;rsquo;ai exploré les liens émaillant les premiers commentaires 
.&lt;/p&gt;
&lt;p&gt;Il s&amp;rsquo;avère que le problème soumis par Mike Croucher est extrêmement difficile, voire impossible.
liste les solutions trouvées par mon programme, et d&amp;rsquo;autres qui ont nécessité des algorithmes beaucoup plus fûtés que le mien pour résoudre cette 
 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;87 = 4271³ - 4126³ - 1972³ , découvert en 1964
&lt;/li&gt;
&lt;li&gt;96 = -15250³ + 13139³ + 10853³&lt;/li&gt;
&lt;li&gt;91 = 83538³ - 67134³ - 65453³&lt;/li&gt;
&lt;li&gt;80 = -112969³ + 103532³ + 69241³&lt;/li&gt;
&lt;li&gt;39 = -159380³ + 134476³ + 117367³ découvert en 1991
&lt;/li&gt;
&lt;li&gt;75 = - 435203231³ + 435203083³ + 4381159³  découvert en 1993 
&lt;/li&gt;
&lt;li&gt;84 = 41639611³ - 41531726³ - 8241191³ découvert en 1994
&lt;/li&gt;
&lt;li&gt;30 =  2220422932³ - 2218888517³ - 283059965³ ainsi que 52 = -61922712865³ + 60702901317³ + 60702901317³ par la même équipe, qui a mis au point l&amp;rsquo;algo le plus performant du moment 
&lt;/li&gt;
&lt;li&gt;24 =15584139827³ - 15550555555³ - 2901096694³ a été découvert avec l&amp;rsquo;algo précédent en 2001 par D. J. Bernstein, dont la page
est consacrée à ce problème et son historique&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A part ça, les matheux démontrent (essayez&amp;hellip;) que les nombres de la forme 9n+4 et 9n+5 ne peuvent pas être la somme de trois cubes, ce qui règle le cas de 4,5,13,14,22,23 etc.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 412px; width: 100%;"&gt;&lt;a href="http://www.geluck.com/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2012/images/9b493f196263e591d63658b2997f5b5b_hu_ac819ab557304383.webp" srcset="https://drgoulu.com/posts/2012/images/9b493f196263e591d63658b2997f5b5b_hu_ac819ab557304383.webp 320w, https://drgoulu.com/posts/2012/images/9b493f196263e591d63658b2997f5b5b_hu_5216f8ac3ff226ad.webp 412w" sizes="(max-width: 640px) 100vw, 412px" alt="Bon... je n ai pas vraiment le droit d&amp;#39;utiliser ce dessin, mais il va tellement bien là que j espère que vous ne m en voudrez pas, cher Docteur G..." loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;Bon&amp;hellip; je n ai pas vraiment le droit d&amp;rsquo;utiliser ce dessin, mais il va tellement bien là que j espère que vous ne m en voudrez pas, cher Docteur G&amp;hellip;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Reste 33 (et 42 et beaucoup d&amp;rsquo;autres), qui résistent effrontément aux informaticiens cherchant à les obtenir, ainsi qu&amp;rsquo;aux mathématiciens essayant de prouver que c&amp;rsquo;est peine perdue&amp;hellip;&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est énervant qu&amp;rsquo;un petit problème tout bête comme celui-ci puisse résister ainsi aux ordinateurs les plus puissants.  Et motivant de penser qu&amp;rsquo;une solution est peut-être à la portée d&amp;rsquo;amateurs éclairés. Des idées ?&lt;/p&gt;
&lt;h3 id="références"&gt;Références:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span id="ref-1"&gt;&lt;/span&gt;Gardiner, V. L., Lazarus, R. B., &amp;amp; Stein, P. R. &amp;ldquo;
. &amp;ldquo;, 1964, Mathematics of Computation, 18, 408-413&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-2"&gt;&lt;/span&gt;Heath-Brown, D. R., Lioen, W. M., &amp;amp; te Riele, H. J. J.&amp;quot;
&amp;rdquo;, 1993, Mathematics of Computation, 61, 235-244&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-3"&gt;&lt;/span&gt;Andrew Bremner, &amp;ldquo;
&amp;rdquo;, 1993&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-4"&gt;&lt;/span&gt;B. Conn and L. Vaserstein, &amp;ldquo;On sums of three integral cubes&amp;rdquo;, 1994, Contemp. Math. 166, 285-294.&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-5"&gt;&lt;/span&gt;Eric Pine, Kim Yarbrough, Wayne Tarrant and Michael Beck, Noam D. Elkies, &amp;ldquo;
&amp;rdquo;, 2000, ANTS IV&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-6"&gt;&lt;/span&gt;Michael Beck, Eric Pine, Wayne Tarrant, Kim Yarbrough Jensen &amp;ldquo;New integer representations as the sum of three cubes&amp;rdquo;, 2007, Math. Comp. 76, 1683-1690 (
)&lt;/li&gt;
&lt;li&gt;&lt;span id="ref-7"&gt;&lt;/span&gt;&lt;span class="openbook_template5"&gt;&lt;a href="http://openlibrary.org/authors/OL4281353A/Wacław_Sierpiński" title="Click to view author in Open Library" target="_blank" rel="noopener"&gt;Wacław Sierpiński&lt;/a&gt; (1988). &lt;a href="http://openlibrary.org/books/OL2722939M/Elementary_theory_of_numbers" title="Click to view title in Open Library" target="_blank" rel="noopener"&gt;Elementary theory of numbers&lt;/a&gt;. North-Holland.&lt;span class="Z3988" title="ctx_ver=Z39.88-2004&amp;amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;amp;rft.genre=book&amp;amp;rft.btitle=Elementary+theory+of+numbers&amp;amp;rft.isbn=0444866620&amp;amp;rft.au=Wac%C5%82aw+Sierpi%C5%84ski&amp;amp;rft.pub=North-Holland&amp;amp;rft.date=1988"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; (
)&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>&amp;quot;jeu de l'année&amp;quot; 2012 et autres : c'est fini.</title><link>https://drgoulu.com/2012/01/18/jeu-de-lannee-2012-et-autres-cest-fini/</link><pubDate>Wed, 18 Jan 2012 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2012/01/18/jeu-de-lannee-2012-et-autres-cest-fini/</guid><description>&lt;p&gt;&lt;em&gt;(mis à jour plusieurs foirs après correction de bugs et améliorations, cf commentaires&amp;hellip;)&lt;/em&gt; &lt;/p&gt;
&lt;p&gt;Je m’apprêtais à passer une soirée tranquille quand je suis tombé sur un tweet de
 disant: &amp;ldquo;Qui va me battre au &amp;ldquo;jeu de l&amp;rsquo;année&amp;rdquo; ? 
&amp;rdquo;.&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 250px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2012/images/09a817e0eb516e6d72357bbf47b564a3_hu_dc589c41448b27fa.webp" srcset="https://drgoulu.com/posts/2012/images/09a817e0eb516e6d72357bbf47b564a3_hu_dc589c41448b27fa.webp 320w, https://drgoulu.com/posts/2012/images/09a817e0eb516e6d72357bbf47b564a3_hu_20b2c74f7bd203f9.webp 480w, https://drgoulu.com/posts/2012/images/09a817e0eb516e6d72357bbf47b564a3_hu_aa032b88a0192bd6.webp 500w" sizes="(max-width: 640px) 100vw, 250px" alt="Python bouffant du matheux" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;figcaption&gt;Python bouffant du matheux&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Un seul click m&amp;rsquo;a torpillé non pas une, mais trois soirées et un certain nombre d&amp;rsquo;heures de réflexion la journée. Mais ma vengeance est terrible : ni ElJj ni aucun autre mathématicien ne passera plus jamais des heures à former les entiers de 1 à 100 en n&amp;rsquo;utilisant que les chiffres de l&amp;rsquo;année (2,0,1,2) une et une seule fois chacun, les opérations de base +,-,*,/,^ et quelques autres. Fi-ni. Et c&amp;rsquo;est rapé aussi pour toutes les années futures ou passées, parce que j&amp;rsquo;ai fait un programme qui résout ce problème une fois pour toute. Amis
, je vous fais ci-dessous économiser des milliers d&amp;rsquo;heures que vous allez pouvoir utiliser pour résoudre de
 (Pensez à moi si vous en résolvez un, merci&amp;hellip;)&lt;/p&gt;
&lt;p&gt;Pour être honnête, la première soirée a été grillée à péniblement trouver 50 formules, ce qui m&amp;rsquo;a à la fois décidé à faire autrement et inspiré beaucoup de respect pour ElJj et les autres fous qui sont parvenus à obtenir des scores de 4000 et quelques points à la main. Bravo !&lt;/p&gt;
&lt;p&gt;Pour 2012, mes solutions sont donc : &lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;\[1, '(((2\*0)-1)^2)', 0\] \[2, '(((2-0)-1)\*2)', 0\] \[3, '(((2-0)-1)+2)', 0\] \[4, '(((2-0)^1)^2)', 0\] \[5, '(((2-0)+1)+2)', 0\] \[6, '(((2-0)+1)\*2)', 0\] \[7, '((2^0)+((1+2)!))', 0\] \[8, '(2^(0+(1+2)))', 0\] \[9, '(((2-0)+1)^2)', 0\] \[10, '((((2+0!)!)-1)\*2)', 0\] \[11, '(((2+0!)!)+(1/.2))', 1\] \[12, '((((2-0)+1)!)\*2)', 0\] \[13, '(2+sqrt((0!+((1/.2)!))))', 1\] \[14, '((((2+0!)!)+1)\*2)', 0\] \[15, '(((2-0)+1)/.2)', 1\] \[16, '(((2+0!)+1)^2)', 0\] \[17, '(((((2+0!)!)-1)!!)+2)', 5\] \[18, '(((2+0!)!)\*(1+2))', 0\] \[19, '((2^0)+(((1+2)!)!!!))', 5\] \[20, '(((2^0)/.1)\*2)', 1\] \[21, '(((((2+0!)!)!!!)+1)+2)', 5\] \[22, '((((2+0!)+1)!)-2)', 0\] \[23, '((.2^(-(0!+1)))-2)', 1\] \[24.0, '((((2-0)^1)^2)!)', 0\] \[25, '((((2+0!)!)-1)^2)', 0\] \[26, '((((2+0!)+1)!)+2)', 0\] \[27, '((2+0!)^(1+2))', 0\] \[28, '(((2+0!)/.1)-2)', 1\] \[29, '(((2+0!)/\[.1\])+2)&amp;rsquo;, 30] \[30, '((((2-0)+1)!)/.2)', 1\] \[31, '(((2+0!)/.1)+(Gamma(2)))', 31\] \[32, '(2^(-(0!-((1+2)!))))', 0\] \[33, '((((2+0!)!)!!)-((1/.2)!!))', 11\] \[34, '(sqrt((2^(0!/.1)))+2)', 1\] \[35, '((((2+0!)!)+1)/.2)', 1\] \[36, '((((2-0)+1)!)^2)', 0\] \[37, '(0!+(((1+2)!)^2))', 50\] \[38, '(((((2+0!)!)!!!)+1)\*2)', 5\] \[39, '(((.2^(-0!))!)-(\[.1\]^(-2)))&amp;rsquo;, 31] \[40, '(((2-0)/.1)\*2)', 1\] \[41, '(0!+(2/(.1/2)))', 51\] \[42, '((((2+0!)!)!!)-((1+2)!))', 5\] \[43, '((((2+0!)!)!!)-(1/.2))', 6\] \[44, '(-((.2-(0!/\[.1\]))/.2))&amp;rsquo;, 32] \[45, '(((((2+0!)!)!!)-1)-2)', 5\] \[46, '(((((2-0)+1)!)!!)-2)', 5\] \[47, '(((((2+0!)!)!!)+1)-2)', 5\] \[48, '((((2+0!)+1)!)\*2)', 0\] \[49, '((((2+0!)!)+1)^2)', 0\] \[50, '((.2^(-(0!+1)))\*2)', 1\]&lt;/th&gt;
&lt;th&gt;\[51, '((.2+(0!/.1))/.2)', 3\] \[52, '(2+(0!/(.1\*.2)))', 2\] \[53, '((((2+0!)!)!!)+(1/.2))', 6\] \[54, '((((2+0!)!)!!!)\*(1+2))', 5\] \[55, '(sqrt((((.2^(-0!))!)+1))/.2)', 2\] \[56, '(((((2+0!)!)+1)!!!)\*2)', 5\] \[57, '((((2+0!)!)!!)+sqrt((\[.1\]&lt;sup&gt;(-2))))&amp;rsquo;, 35] \[58, '((((2+0!)!)/.1)-2)', 1\] \[59, '((((2+0!)!)/.1)-(Gamma(2)))', 31\] \[60, '(((((2+0!)!)-1)!)/2)', 0\] \[61, '((((2+0!)!)/.1)+(Gamma(2)))', 31\] \[62, '((((2+0!)!)/.1)+2)', 1\] \[63, '((((2+0!)!)!!)+((1/.2)!!))', 11\] \[64, '(2^((0+(1+2))!))', 0\] \[65, '(0!+(2^((1+2)!)))', 50\] \[66, '((((2+0!)!)!!)+(((1+2)!)!!!))', 10\] \[67, '((((.2^(-0!))!!)-\[.1\])/\[.2\])&amp;rsquo;, 66] \[68, '(20+(((1+2)!)!!))', 15\] \[69, '((((0!+2)!)!!)+21)', 65\] \[70, '(((((2+0!)!)!)\*.1)-2)', 1\] \[71, 'sqrt((((((2+0!)!)+1)!)+(Gamma(2))))', 30\] \[72, 'sqrt((((((2+0!)!)!)\*.1)^2))', 1\] \[73, '(((((2+0!)!)!)\*.1)+(Gamma(2)))', 31\] \[74, '(((((2+0!)!)!)\*.1)+2)', 1\] \[75, '(((((2+0!)!)-1)!!)/.2)', 6\] \[76, '(-((.2^(-0!))-(\[.1\]&lt;/sup&gt;(-2))))&amp;rsquo;, 31] \[77, '((((2^2)!!)!!!)-sqrt((0!/\[.1\])))&amp;rsquo;, 90] \[78, '((((-2)+(0!/.1))!!!)-2)', 6\] \[79, '(-(2-(0!/(\[.1\]&lt;sup&gt;2))))&amp;rsquo;, 30] \[80, '(-((.2-0!)/(.1^2)))', 2\] \[81, '((((.2^(-0!))!!!)-1)^2)', 6\] \[82, '(2+(((0!/.1)-2)!!!))', 6\] \[83, '(2+(0!/(\[.1\]&lt;sup&gt;2)))&amp;rsquo;, 30] \[84, '((((.2^(-0!))!!!)!!!)\*(.1+.2))', 13\] \[85, '(((((2+0!)!)!!!)-1)/.2)', 6\] \[86, '((.2^(-0!))+(\[.1\]&lt;/sup&gt;(-2)))&amp;rsquo;, 31] \[87, '(((2+0!)!)+(\[.1\]&lt;/sup&gt;(-2)))&amp;rsquo;, 30] \[88, '(-((((2+0!)!)!)\*(.1-\[.2\])))&amp;rsquo;, 31] \[89, '(-((.2-((sqrt((0!/\[.1\]))!)!!!))/.2))&amp;rsquo;, 37] \[90, '(((((2-0)+1)!)!!!)/.2)', 6\] \[91, '(((.2^(-0!))!!!)+(\[.1\]^(-2)))&amp;rsquo;, 36] \[92, '(2\*(((sqrt((0!/\[.1\]))!)!!)-2))&amp;rsquo;, 35] \[93, '93', 500\] \[94, '(-(((2+0!)!)-(.1^(-2))))', 1\] \[95, '(-((.2^(-0!))-(.1^(-2))))', 2\] \[96, '(-((.2-0!)\*((1/.2)!)))', 2\] \[97, '(-(2+(0!-(.1^(-2)))))', 1\] \[98, '(-(2-(0!/(.1^2))))', 1\] \[99, '(-((2^0)-(.1^(-2))))', 1\] \[100, '(((2^0)/.1)^2)', 1\]&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;C&amp;rsquo;est un peu &amp;ldquo;brut de décoffrage&amp;rdquo; et mérite quelques explications. Chaque triplet comporte le nombre à obtenir, la &amp;ldquo;meilleure&amp;rdquo; formule qui le donne, et le coût de cette formule en points calculés selon les règles décrites dans l&amp;rsquo;article d&amp;rsquo;El Jj. Les formules qui utilisent les chiffres 2,0,1,2 dans l&amp;rsquo;ordre et les opérations arithmétiques de base et la factorielle (saviez-vous que 0!=1 ?) ont le coût minimum de 0. L&amp;rsquo;utilisation du point décimal bien utile avec une division ne coute qu&amp;rsquo;un point. Les formules qui utilisent des opérateurs plus compliqués comme les
(notées !! et !!!) et la
 sont pénalisées de 5 points.&lt;/p&gt;
&lt;p&gt;La formule pour 77 est la plus coûteuse (90 points) car elle utilise les chiffres dans le désordre (50 points), le développements décimal périodique &lt;/p&gt;
\[.1\]&lt;p&gt; = 0.11111111&amp;hellip; = 1/9 qui vaut 30 points chacun, plus deux multifactorielles. A noter que l&amp;rsquo;on a eu besoin d&amp;rsquo;inverser l&amp;rsquo;ordre des chiffres que dans 4 cas seulement.&lt;/p&gt;
&lt;p&gt;Et enfin, les nombre pour lesquels on ne trouve pas de solution sont pénalisés de 500 points, ce qui n&amp;rsquo;est le cas pour 93, pour lesquel je suis quasi certain qu&amp;rsquo;il n&amp;rsquo;existe pas de solution avec les opérations autorisées. Mais seulement &amp;ldquo;quasi&amp;rdquo;, pour des raisons que j&amp;rsquo;explique plus loin.&lt;/p&gt;
&lt;p&gt;Le total des pénalités que j&amp;rsquo;obtiens est de 1637 points&lt;/p&gt;
&lt;p&gt;Enfin, les formules ne sont pas très jolies d&amp;rsquo;une part à cause d&amp;rsquo;une &amp;ldquo;surparenthésation&amp;rdquo; qui simplifie l&amp;rsquo;écriture du programme (pas besoin de gérer la
), et d&amp;rsquo;autre part car le choix de la &amp;ldquo;meilleure&amp;rdquo; formule lorsqu&amp;rsquo;on en trouve plusieurs de score égal se fait par la longueur de la chaîne, sans tenir compte de l&amp;rsquo;ordre d&amp;rsquo;insertion ou de la priorité des opérateurs. Donc (((2*0)-1)^2) peut paraître plus compliqué que (((2*0)-1)+2) pour obtenir 1, mais pour une machine, c&amp;rsquo;est le même prix.&lt;/p&gt;
&lt;p&gt;Comme il se fait tard je coupe/colle le programme ci-dessous, je le commenterai plus tard (comme d&amp;rsquo;hab&amp;hellip;)&lt;/p&gt;
\[code lang="python" collapse="true"\]&lt;p&gt; # -*- coding: utf-8 -*- &amp;quot;&amp;quot;&amp;quot; Created on Mon Jan 16 17:19:27 2012&lt;/p&gt;
&lt;p&gt;@author: Philippe Guglielmetti solves
&amp;quot;&amp;quot;&amp;quot;&lt;/p&gt;
&lt;p&gt;import sys&lt;/p&gt;
&lt;p&gt;from math import sqrt,pow from scipy import factorial,factorial2,factorialk from itertools import permutations&lt;/p&gt;
&lt;p&gt;class f: &amp;ldquo;&amp;ldquo;&amp;ldquo;a formula&amp;rdquo;&amp;rdquo;&amp;rdquo; def __init__(self, m,p=0,v=None,parenthesis=False): #print m,&amp;rsquo;=&amp;rsquo;, self.isdigit=isinstance(m, (int, long)) self.math=str(m) #convert to string in case it&amp;rsquo;s a digit self.points=p if v is None: v=eval(self.math) self.isint=isinstance(v, (int,long)) if isinstance(v, float): #try to convert to int self.isint=abs(v-round(v))&amp;lt;1e-9 if self.isint: v=int(round(v)) if isinstance(v, long): #we don&amp;rsquo;t want bignums, for performance if abs(v)&amp;lt;sys.float_info.max: v=float(v) self.isint=True self.value=v&lt;/p&gt;
&lt;p&gt;if parenthesis: self.math=&amp;rsquo;(&amp;rsquo;+self.math+&amp;rsquo;)&amp;rsquo; #print self.value&lt;/p&gt;
&lt;p&gt;def __cmp__(self,other): if self.value&amp;lt;other.value:return -1 if self.value&amp;gt;other.value:return +1 if self.points&amp;lt;other.points:return -1 if self.points&amp;gt;other.points:return +1 if len(self.math)&amp;lt;len(other.math):return -1 if len(self.math)&amp;gt;len(other.math):return +1 return 0&lt;/p&gt;
&lt;p&gt;def __repr__(self): return str(&lt;/p&gt;
\[self.value,self.math,self.points\]&lt;p&gt;);&lt;/p&gt;
&lt;p&gt;class results(dict): &amp;ldquo;&amp;ldquo;&amp;ldquo;dictionary of formulas indexed by their result. we keep only the simplest entry for each result&amp;rdquo;&amp;rdquo;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;def __init__(self): dict.__init__(self)&lt;/p&gt;
&lt;p&gt;def add(self, f): if f.value in self.keys() and f&amp;gt;self&lt;/p&gt;
\[f.value\]&lt;p&gt; : pass else: self&lt;/p&gt;
\[f.value\]&lt;p&gt;=f&lt;/p&gt;
&lt;p&gt;def merge(self,d): for i in d.itervalues(): self.add(i)&lt;/p&gt;
&lt;p&gt;def score(self): return sum(map(lambda x: x.points,self.itervalues()))&lt;/p&gt;
&lt;p&gt;def notfound(self,p=500): return &lt;/p&gt;
\[i for (i,v) in self.iteritems() if v.points&gt;=p\]&lt;p&gt;def refine(self,recurse=2): &amp;ldquo;&amp;ldquo;&amp;ldquo;add combinations of monadic operators&amp;rdquo;&amp;rdquo;&amp;rdquo; r=results() for a in self.itervalues(): if recurse&lt;mark&gt;0 and a.value&amp;lt;&amp;gt;0: r.add(f(&amp;rsquo;-&amp;rsquo;+a.math,a.points,-a.value,True)) if a.isint: if a.value&lt;/mark&gt;0: r.add(f(a.math+&amp;rsquo;!&amp;rsquo;,a.points,1)) # 0! == 1 is very useful&amp;hellip; if a.value&amp;gt;1: s=f(&amp;lsquo;sqrt(&amp;rsquo;+a.math+&amp;quot;)&amp;quot;,a.points,sqrt(a.value)) if s.isint: r.add(s) if a.value&amp;gt;1 and a.value&amp;lt;19: r.add(f(a.math+&amp;rsquo;!&amp;rsquo;,a.points,factorial(int(a.value),True),True)) r.add(f(&amp;lsquo;Gamma(&amp;rsquo;+a.math+&amp;rsquo;)&amp;rsquo;,a.points+30,factorial(int(a.value)-1,True),True)) if a.value&amp;gt;3 and a.value&amp;lt;29: r.add(f(a.math+&amp;rsquo;!!&amp;rsquo;,a.points+5,factorial2(int(a.value),True),True)) if a.value&amp;gt;4 and a.value&amp;lt;39: r.add(f(a.math+&amp;rsquo;!!!&amp;rsquo;,a.points+5,factorialk(int(a.value),3,True),True)) self.merge(r) if recurse&amp;gt;0: self.refine(recurse-1)&lt;/p&gt;
&lt;p&gt;class monadic(results): &amp;ldquo;&amp;ldquo;&amp;ldquo;combinations of monadic operators around a formula&amp;rdquo;&amp;rdquo;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;def __init__(self, a): results.__init__(self) self.add(a) if a.value!=0: if a.isdigit: self.add(f(&amp;rsquo;.&amp;rsquo;+a.math,a.points+1)) if a.value&amp;lt;10: self.add(f(&amp;rsquo;&lt;/p&gt;
\[.'+a.math+'\]&lt;p&gt;&amp;rsquo;,a.points+30,a.value/9.)) self.refine();&lt;/p&gt;
&lt;p&gt;class diadic(results): &amp;ldquo;&amp;ldquo;&amp;ldquo;combinations of diadic operators of 2 operands&amp;rdquo;&amp;rdquo;&amp;rdquo;&lt;/p&gt;
&lt;p&gt;def __init__(self, a,b): results.__init__(self) for i in a.itervalues(): for j in b.itervalues(): if i.isdigit and j.isdigit: if i.value!=0: self.add(f(int(i.math+j.math),10)) self.add(f(i.math+&amp;rsquo;.&amp;rsquo;+j.math,11)) self.add(f(i.math+&amp;rsquo;+&amp;rsquo;+j.math,i.points+j.points,i.value+j.value,True)) self.add(f(i.math+&amp;rsquo;-&amp;rsquo;+j.math,i.points+j.points,i.value-j.value,True)) self.add(f(i.math+&amp;rsquo;*&amp;rsquo;+j.math,i.points+j.points,i.value*j.value,True)) if j.value!=0: self.add(f(i.math+&amp;rsquo;/&amp;rsquo;+j.math,i.points+j.points,float(i.value)/float(j.value),True)) try: #so many things can go wrong with next line&amp;hellip; self.add(f(i.math+&amp;rsquo;^&amp;rsquo;+j.math,i.points+j.points,pow(i.value,j.value),True)) except: pass if i.isint: try: #so many things can go wrong with next line&amp;hellip; self.add(f(&amp;lsquo;root(&amp;rsquo;+i.math+&amp;rsquo;,&amp;rsquo;+j.math+&amp;rsquo;)&amp;rsquo;,i.points+j.points+5,pow(j.value,1./i.value),True)) except: pass if i.isint and j.isint and i.value&amp;gt;=0 and j.value&amp;gt;0 and i.value/j.value&amp;lt;10: try: #so many things can go wrong with next line&amp;hellip; self.add(f(i.math+&amp;rsquo;!&amp;rsquo;+j.math,i.points+j.points+5,factorialk(i.value,j.value),True)) except: pass&lt;/p&gt;
&lt;p&gt;self.refine();&lt;/p&gt;
&lt;p&gt;print &amp;lsquo;building list of monadics&amp;rsquo; m=map(monadic,map(f,range(0,10))) #list of all monadics of digits&lt;/p&gt;
&lt;p&gt;#use @Memoized here to improve performance def d(a,b): return diadic(a,b)&lt;/p&gt;
&lt;p&gt;def year(n,display=True,verbose=True): solution=results() for i in range(1,101): solution.add(f(i,500))&lt;/p&gt;
&lt;p&gt;def addresults(a,p): if verbose : print &amp;lsquo;formulas&amp;rsquo;,len(a), improved=0 found=0 for (i,v) in a.items(): if isinstance(i, (int, long)) and i&amp;gt;0 and i&amp;lt;101: v.points+=p if v&amp;lt;solution&lt;/p&gt;
\[i\]&lt;p&gt;: if solution&lt;/p&gt;
\[i\]&lt;p&gt;.points==500: found+=1 else: improved+=1 solution&lt;/p&gt;
\[i\]&lt;p&gt;=v if verbose: print(&amp;lsquo;found :&amp;rsquo;+str(found)+&amp;rsquo; improved :&amp;rsquo;+str(improved)+&amp;rsquo; score:&amp;rsquo;+str(solution.score()))&lt;/p&gt;
&lt;p&gt;def combine (a,p): m0=m&lt;/p&gt;
\[a\[0\]&lt;p&gt;]; m1=m&lt;/p&gt;
\[a\[1\]&lt;p&gt;]; m2=m&lt;/p&gt;
\[a\[2\]&lt;p&gt;]; m3=m&lt;/p&gt;
\[a\[3\]&lt;p&gt;] if solution.notfound():addresults(d(d(d(m0,m1),m2),m3),p) if solution.notfound():addresults(d(d(m0,d(m1,m2)),m3),p) if solution.notfound():addresults(d(m0,d(m1,d(m2,m3))),p) if solution.notfound():addresults(d(m0,d(d(m1,m2),m3)),p) if solution.notfound():addresults(d(d(m0,m1),d(m2,m3)),p)&lt;/p&gt;
&lt;p&gt;y=&lt;/p&gt;
\[int(i) for i in str(n)\]&lt;p&gt; combine(y,0) y.sort() for i in permutations(y): combine(i,50)&lt;/p&gt;
&lt;p&gt;if display: for i in solution.itervalues():print i print n,solution.score(),solution.notfound()&lt;/p&gt;
&lt;p&gt;year(2012) &lt;/p&gt;
\[/code\]</description></item><item><title>Sculptures et science</title><link>https://drgoulu.com/2010/09/16/sculptures/</link><pubDate>Thu, 16 Sep 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/09/16/sculptures/</guid><description>&lt;p&gt;Art et sciences peuvent faire bon ménage, comme le montrent trois sculpteurs repérés sur le web ces derniers temps.&lt;/p&gt;
&lt;p&gt;
 est une artiste américaine qui produit de nombreux objets directement inspirés d&amp;rsquo;objets
,
ou
. Il utilise l&amp;rsquo;
en métal ou en
, ce qui lui permet de vendre ses œuvres à des prix très abordables. Mais je crois que je vais craquer plutôt pour un cristal gravé au laser comme celui-ci, qui représente le champ magnétique terrestre :&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 305px; width: 100%;"&gt;&lt;a href="http://www.bathsheba.com/crystal/geo/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/db935e385522bddeccdf7fca187faa6c_hu_3e0f84df8ceddd02.webp" srcset="https://drgoulu.com/posts/2010/images/db935e385522bddeccdf7fca187faa6c_hu_3e0f84df8ceddd02.webp 305w" sizes="(max-width: 640px) 100vw, 305px" alt="Geodynamo en cristal, de Bathsheba" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;&amp;quot;Geodynamo&amp;quot; en cristal, de Bathsheba&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;A noter aussi ses &amp;ldquo;
&amp;rdquo; dont on peut télécharger les modèles 3D.&lt;/p&gt;
&lt;p&gt;Dans un autre style, Francis Tabary est un illusionniste français qui réalise d&amp;rsquo;étonnantes &amp;ldquo;
&amp;rdquo; comme celle-ci:&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 500px; width: 100%;"&gt;&lt;a href="http://www.francistabary.com/index.php?menu=detail_impossible&amp;amp;num=22" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/eb455380697eaf1156dfe15850492296_hu_47b8221b9af0ca0f.webp" srcset="https://drgoulu.com/posts/2010/images/eb455380697eaf1156dfe15850492296_hu_47b8221b9af0ca0f.webp 320w, https://drgoulu.com/posts/2010/images/eb455380697eaf1156dfe15850492296_hu_a8b0bc58210868aa.webp 480w, https://drgoulu.com/posts/2010/images/eb455380697eaf1156dfe15850492296_hu_806f9a2441a241a9.webp 500w" sizes="(max-width: 640px) 100vw, 500px" alt="Trident en aluminium éclairé par des leds, de Francis Tabary" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;&amp;quot;Trident&amp;quot; en aluminium éclairé par des leds, de Francis Tabary&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Cest la photo d&amp;rsquo;un objet bien réel, vous pouvez le mettre dans votre salon, mais peut-être qu&amp;rsquo;il faut le regarder sous un certain angle pour que l&amp;rsquo;impossibilité apparaisse dans toute sa splendeur&amp;hellip;&lt;/p&gt;
&lt;p&gt;Dans cette autre oeuvre, il faut que l&amp;rsquo;éclairage soit bien dirigé et qu&amp;rsquo;il n&amp;rsquo;y ait pas de courant d&amp;rsquo;air, mais le résultat est saisissant :&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Enfin,
, qui fait des choses très colorées en bois,  dont le lien avec la science ne saute pas forcément aux yeux :&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 464px; width: 100%;"&gt;&lt;a href="http://www.nathaliemiebach.com/weather07.html" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/0e5878fbe389307a85a1e63828dcba3a_hu_6cf3c762a06e4945.webp" srcset="https://drgoulu.com/posts/2010/images/0e5878fbe389307a85a1e63828dcba3a_hu_6cf3c762a06e4945.webp 320w, https://drgoulu.com/posts/2010/images/0e5878fbe389307a85a1e63828dcba3a_hu_2f983622857f9b6b.webp 464w" sizes="(max-width: 640px) 100vw, 464px" alt="Warm Winter de Nathalie Miebach" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;&amp;quot;Warm Winter&amp;quot; de Nathalie Miebach&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Son idée est de représenter des données numériques par des perles de couleur et des vecteurs matérialisés par des bâtonnets. Dans la sculpture ci-dessus, elle a pris les données météo mesurées pendant un mois par les bouées de Herring Cove, dans le golfe du Maine. Il y a les températures de l&amp;rsquo;air, du sol et de l&amp;rsquo;eau, la direction et la vitesse du vent ainsi que les marées et la phase de la Lune.&lt;/p&gt;
&lt;p&gt;Ca change des plots x-y, et je trouve que Nathalie arrive bien à traduire à la fois le rythme et le chaos de la nature dans son œuvre. Il faut aller jusqu&amp;rsquo;à  New-York pour voir ses œuvres, pour l&amp;rsquo;instant.&lt;/p&gt;</description></item><item><title>Icosien, le nouveau jeu de Neamar</title><link>https://drgoulu.com/2010/06/24/icosien-le-nouveau-jeu-de-neamar/</link><pubDate>Thu, 24 Jun 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/06/24/icosien-le-nouveau-jeu-de-neamar/</guid><description>&lt;p&gt;Il l&amp;rsquo;avait annoncé, il l&amp;rsquo;a fait : Neamar a ajouté un nouveau jeu à sa
:
. Et c&amp;rsquo;est un excellent jeu. En réalité il y a même deux jeux pour le prix d&amp;rsquo;un seul:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dans les 10 premiers tableaux, il s&amp;rsquo;agit de reproduire le motif gris d&amp;rsquo;un seul mouvement de souris, sans repasser deux fois sur le même trait (mais les croisements de fil sont autorisés). En termes techniques, il s&amp;rsquo;agit de vérifier que ces tableaux sont des
. Pas trop difficile une fois qu&amp;rsquo;on a trouvé le truc.&lt;/li&gt;
&lt;li&gt;Dans les 10 tableaux suivants, il faut passer une et une seule fois par chaque noeud, en utilisant uniquement les traits disponibles  (mais on n&amp;rsquo;est pas obligé de passer sur tous les traits). Pour les matheux, il s&amp;rsquo;agit de trouver des
. Là, la difficulté passe de &amp;ldquo;petit casse-tête sympa&amp;rdquo; à &amp;ldquo;horrible arrache neurones énervant&amp;rdquo;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="aligncenter" style="max-width: 512px; width: 100%;"&gt;&lt;a href="http://neamar.fr/Res/Icosien/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/f860cf98facccf60ba0d8705f857b25d_hu_9bbb1725535fd412.webp" srcset="https://drgoulu.com/posts/2010/images/f860cf98facccf60ba0d8705f857b25d_hu_9bbb1725535fd412.webp 320w, https://drgoulu.com/posts/2010/images/f860cf98facccf60ba0d8705f857b25d_hu_63f5f4308df1f44d.webp 480w, https://drgoulu.com/posts/2010/images/f860cf98facccf60ba0d8705f857b25d_hu_72c666326f4480bd.webp 640w" sizes="(max-width: 640px) 100vw, 512px" alt="tableau19" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;J&amp;rsquo;en suis là. C&amp;rsquo;est dur. Regarder la soluce de Neamar serait déshonorant. A l&amp;rsquo;aide Python !&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;De plus, je décerne à Icosien le titre envié de &amp;ldquo;plus beau jeu de graphes du web&amp;rdquo; pour deux raisons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Le design de Licoti (
) est vraiment réussi. Bravo !&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;L&amp;rsquo;interface utilisateur est tout simplement géniale. Quand Neamar avait pondu un
, je n&amp;rsquo;avais pas compris à quel point son système est simple et efficace.  Je réalise maintenant que sans ça, ce beau jeu aurait été injouable.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enfin, mentionnons qu&amp;rsquo;Icosien peut être instructif. &amp;ldquo;Peut&amp;rdquo; car on n&amp;rsquo;est pas obligé de connaitre la théorie des graphes pour y jouer, mais qu&amp;rsquo;y jouer peut inciter à la lecture des nombreuses informations figurant sur la page du jeu, et  suivre les liens conduit vers pleins d&amp;rsquo;infos intéressantes.&lt;/p&gt;
&lt;h3 id="a-voir-aussi"&gt;A voir aussi:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;le &amp;ldquo;
&amp;rdquo; (spoiler alert ! cetta page contient la solution de certains tableaux, dont le 19, argh! )&lt;/li&gt;
&lt;li&gt;le
en Action Script 3&lt;/li&gt;
&lt;li&gt;la version 1857 de l&amp;rsquo; &amp;ldquo;
&amp;rdquo; par Hamilton himself, en vrai bois d&amp;rsquo;arbre&lt;/li&gt;
&lt;li&gt;&amp;ldquo;
&amp;rdquo; sur MathWorld&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Jeu-concours électrique</title><link>https://drgoulu.com/2010/05/17/jeu-concours-electrique/</link><pubDate>Mon, 17 May 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/05/17/jeu-concours-electrique/</guid><description>&lt;p&gt;Amateurs de casse-têtes, de maths et d&amp;rsquo;algorithmes, oyez, oyez !&lt;/p&gt;
&lt;p&gt;La
et la
avec l&amp;rsquo;appui de Réseau de Transport d&amp;rsquo;Electricité organisent un concours doté de 2000 Euros de prix et ouvert jusqu&amp;rsquo;au 30 juin 2010.&lt;/p&gt;
&lt;p&gt;Il s&amp;rsquo;agit de concevoir le réseau de lignes électriques nécessaires pour alimenter les villes d&amp;rsquo;un pays à partir de centrales :&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 528px; width: 100%;"&gt;&lt;a href="images/76fa5e4df5077431227511a63a9e6c9c.png" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/76fa5e4df5077431227511a63a9e6c9c_hu_7cf5609103ab52f3.webp" srcset="https://drgoulu.com/posts/2010/images/76fa5e4df5077431227511a63a9e6c9c_hu_7cf5609103ab52f3.webp 320w, https://drgoulu.com/posts/2010/images/76fa5e4df5077431227511a63a9e6c9c_hu_5957e9e63837a88a.webp 480w, https://drgoulu.com/posts/2010/images/76fa5e4df5077431227511a63a9e6c9c_hu_1d8a66b2d3e5854a.webp 528w" sizes="(max-width: 640px) 100vw, 528px" alt="Concours" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;le pays du concours, carré malgré les apparences&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Pour ne rien arranger, les centrales sont de puissances différentes et fournissent de la THT, et les villes consomment également des puissances différentes (listées dans la
), mais doivent être alimentées en HT via des transformateurs à placer à volonté, mais à au moins 1km des villes et pas dans les zones protégées marquées en pointillés.&lt;/p&gt;
&lt;p&gt;Pour relier tout ceci, on peut construire des lignes THT de 1GW à 1M€/km (c&amp;rsquo;est même &amp;ldquo;obligatoire de mettre une ligne THT lorsque c&amp;rsquo;est possible&amp;rdquo;, mais cette contrainte me parait peu claire). On doit utiliser des lignes HT de 1 GW à 300K€/km pour alimenter les villes, et dans les zones protégées, on n&amp;rsquo;a droit qu&amp;rsquo;à des lignes HT enterrées de 0.3 GW à 1 M€/km.&lt;/p&gt;
&lt;p&gt;De plus le tout doit être résistant à une panne : si une centrale, une ligne ou un transfo flanche, les villes doivent toujours être alimentées.&lt;/p&gt;
&lt;p&gt;Le vainqueur sera celui qui proposera le réseau satisfaisant à toutes ces contraintes et coutant le moins cher avant le 30 juin, mais mon petit doigt me dit qu&amp;rsquo;il ne faut pas attaquer le problème le 29&amp;hellip;&lt;/p&gt;
&lt;p&gt;Et avant de vous lancer dans de p&amp;rsquo;tits dessins ou de gros calculs, notez encore que tout ce qui précède peut être potentiellement faux et/ou incomplet (je décline toute responsabilité etc etc). Seul le
fait foi.&lt;/p&gt;
&lt;p&gt;Pour la petite histoire, j&amp;rsquo;ai trouvé ce concours sur &amp;ldquo;
&amp;rdquo;, un blog intéressant découvert au moment de la rédaction de
&lt;/p&gt;</description></item><item><title>le retour de l'âge du capitaine</title><link>https://drgoulu.com/2010/04/25/le-retour-de-lage-du-capitaine/</link><pubDate>Sun, 25 Apr 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/04/25/le-retour-de-lage-du-capitaine/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2010/images/7bdb560add4a40ac0b203a7a85fdf52e_hu_1160ac7d3b0a63a1.webp 248w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2010/images/7bdb560add4a40ac0b203a7a85fdf52e_hu_1160ac7d3b0a63a1.webp"
width="248"
height="215"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Trouvé encore un de ces merveilleux problèmes qui semble impossible et qui est pourtant délicieusement simple :&lt;/p&gt;
&lt;p&gt;Le Xème jour du Yème mois de l&amp;rsquo;année 1900 + Z, un bateau ayant U hélices, V cheminées et W hommes d&amp;rsquo;équipage est lancé.&lt;/p&gt;
&lt;p&gt;Sachant que le produit UVWXYZ plus la racine cubique de l&amp;rsquo;âge du capitaine, qui est grand-père, est égal à &lt;strong&gt;4002331&lt;/strong&gt;, trouver l&amp;rsquo;âge du capitaine ainsi que toutes les caractéristiques du bateau.&lt;/p&gt;
&lt;p&gt;Si, si &amp;hellip; il y a une solution, et une seule ! Pour décourager les recherches sur internet et les solutions copiées/collées, je veux non seulement la solution, mais savoir comment vous avez fait  le seul calcul nécessaire.&lt;/p&gt;</description></item><item><title>La saga des graphes</title><link>https://drgoulu.com/2010/03/06/la-saga-des-graphes/</link><pubDate>Sat, 06 Mar 2010 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2010/03/06/la-saga-des-graphes/</guid><description>&lt;p&gt;Découvert grâce à Patric quelques
de plus : la
. 3 jeux en Flash attendent impatiemment vos neurones :&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 300px; width: 100%;"&gt;&lt;a href="http://neamar.fr/Res/AGraphe/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/19aab911f31dc5631223df29f0afbdab_hu_5e4a326199ac8fca.webp" srcset="https://drgoulu.com/posts/2010/images/19aab911f31dc5631223df29f0afbdab_hu_5e4a326199ac8fca.webp 320w, https://drgoulu.com/posts/2010/images/19aab911f31dc5631223df29f0afbdab_hu_67ac3df8d6760700.webp 480w, https://drgoulu.com/posts/2010/images/19aab911f31dc5631223df29f0afbdab_hu_2264d5eeefa0bca5.webp 643w" sizes="(max-width: 640px) 100vw, 300px" alt="AGraphe" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;AGraphe&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;
est le plus facile en apparence : il s&amp;rsquo;agit d&amp;rsquo;allumer le noeud supérieur du graphe, qui ne peut l&amp;rsquo;être que si tous ses noeuds enfants sont allumés. L&amp;rsquo;astuce est qu&amp;rsquo;on ne peut avoir plus de N noeuds allumés simultanément, donc qu&amp;rsquo;il faut aussi éteindre judicieusement les noeuds. Mais il reste facile.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 300px; width: 100%;"&gt;&lt;a href="http://neamar.fr/Res/BGraphe/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/e046b6ff88906a9d4cf6e5fc404da844_hu_a3de410257c17f5f.webp" srcset="https://drgoulu.com/posts/2010/images/e046b6ff88906a9d4cf6e5fc404da844_hu_a3de410257c17f5f.webp 320w, https://drgoulu.com/posts/2010/images/e046b6ff88906a9d4cf6e5fc404da844_hu_aa706e139a4a5760.webp 480w, https://drgoulu.com/posts/2010/images/e046b6ff88906a9d4cf6e5fc404da844_hu_92e45422defa9e8d.webp 642w" sizes="(max-width: 640px) 100vw, 300px" alt="BGraphe" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;BGraphe&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Dans
, il faut déplacer les noeuds de façon à ce que les arêtes ne se coupent pas. Une fois qu&amp;rsquo;on a compris le truc on passe quelques tableaux assez facilement, puis ça devient vraiment trop difficile.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 300px; width: 100%;"&gt;&lt;a href="http://neamar.fr/Res/CGraphe/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2010/images/8ac3dd74a4432546fc1330bcb2b94b97_hu_99e3b40c5155b71a.webp" srcset="https://drgoulu.com/posts/2010/images/8ac3dd74a4432546fc1330bcb2b94b97_hu_99e3b40c5155b71a.webp 320w, https://drgoulu.com/posts/2010/images/8ac3dd74a4432546fc1330bcb2b94b97_hu_73c86827bbbb51ea.webp 480w, https://drgoulu.com/posts/2010/images/8ac3dd74a4432546fc1330bcb2b94b97_hu_8d80cd2ea117898.webp 645w" sizes="(max-width: 640px) 100vw, 300px" alt="CGraphe" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;CGraphe&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;
est une implantation du &amp;ldquo;
&amp;rdquo; qui se joue à 2:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le &amp;ldquo;Paintre&amp;rdquo; doit relier les deux noeuds marqués en rouge en allumant une arête à chaque tour&lt;/li&gt;
&lt;li&gt;le &amp;ldquo;Couhpeur&amp;rdquo; doit l&amp;rsquo;en empêcher en supprimant carrément une arête à chaque tour.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On joue alternativement chaque rôle, et l&amp;rsquo;ordinateur l&amp;rsquo;autre. Les premiers tableaux permettent de mettre au point la stratégie de chaque rôle, et les tableaux suivants sont là pour l&amp;rsquo;éprouver&amp;hellip;&lt;/p&gt;
&lt;p&gt;Sur chaque page, n&amp;rsquo;omettez pas de lire le texte en dessous de chaque jeu. On y apprend des choses intéressantes sur les graphes et sur le processus de développement de ces jeux très bien réalisés. On en trouve même le code source. Et Neamar y explique aussi comment fabriquer nos propres tableaux pour ses jeux en attendant le  DGraphe qu&amp;rsquo;il nous nous prépare.&lt;/p&gt;
&lt;p&gt;En fouillant un peu, on trouve que ce Neamar fait plein d&amp;rsquo;
, dont un
. Hop, un flux RSS de plus.&lt;/p&gt;</description></item><item><title>Petits jeux intelligents</title><link>https://drgoulu.com/2009/12/19/petits-jeux-intelligents/</link><pubDate>Sat, 19 Dec 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/12/19/petits-jeux-intelligents/</guid><description>&lt;p&gt;Bientôt Noël&amp;hellip; Un peu de temps à tuer ou des jeunes à occuper intelligemment quelques heures ? Explorez les petits jeux gratuits découverts sur le web.&lt;/p&gt;
&lt;h3 id="un-peu-de-math-lines"&gt;Un peu  de
&lt;/h3&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2009/images/fac0344e7a75fa378a5f50a07b94f5fa_hu_2476ee8737bc776c.webp 320w, https://drgoulu.com/posts/2009/images/fac0344e7a75fa378a5f50a07b94f5fa_hu_d5e5a6871c0e2d2.webp 470w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2009/images/fac0344e7a75fa378a5f50a07b94f5fa_hu_2476ee8737bc776c.webp"
width="470"
height="259"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Le canon tire des billes portant des chiffres qui s&amp;rsquo;insèrent dans un petit train roulant inéluctablement vers le trou de la défaite. Lorsque deux billes en contact forment une somme de 10, elles disparaissent. Simple ? Essayez&amp;hellip; Puis tentez de créer des réactions en chaine pour marquer plus de points.&lt;/p&gt;
&lt;h3 id="un-peu-de-physique-bridgecraft-et-icebreaker"&gt;Un peu de Physique:
et
&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Ne vous fiez pas au look enfantin de
pour en conclure qu&amp;rsquo;ils s&amp;rsquo;adresse aux tout petits. Construire un pont, même virtuel, exige d&amp;rsquo;avoir quelques connaissances&amp;hellip; ou de les acquérir par l&amp;rsquo;expérience.&lt;/p&gt;
&lt;p&gt;Les casse-têtes mécaniques d&amp;rsquo;
se résolvent à coup de sabre virtuel, en tranchant des cordes et des blocs de glace. Addictif et marrant.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="un-peu-de-nostalgie--les-lemmings"&gt;Un peu de nostalgie : les Lemmings&lt;/h3&gt;
&lt;p&gt;Je vous parle d&amp;rsquo;un temps que les moins de vingt ans ne peuvent pas connaître, mais devraient : le temps des
, un des jeux les plus géniaux de l&amp;rsquo;histoire. On peut jouer en ligne à la version quasi originale
. D&amp;rsquo;accord, le graphisme est d&amp;rsquo;époque, mais le challenge reste actuel : amener des hordes de bestioles suicidaires à la porte du salut.&lt;/p&gt;
&lt;p&gt;
(En fait c&amp;rsquo;est un
, mais la performance vaut un coup de chapeau : réécrire le
&amp;hellip;)&lt;/p&gt;
&lt;h3 id="beaucoup-doriginalité--shift"&gt;Beaucoup d&amp;rsquo;originalité :
&lt;/h3&gt;
&lt;p&gt;Ce jeu de plateforme en noir et blanc est l&amp;rsquo;un de mes préférés. A chaque pression de la touche &lt;/p&gt;
\[Shift\]&lt;p&gt;, un renversement de situation total permet de progresser vers la porte de sortie, ou de tomber dans un piège fatal. Un jeu absolument excellent.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Une fois que vous aurez fini Shift, vous pourrez vous attaquer à
,
,
, &amp;hellip; Il existe aussi sur Android, iPhone et facebook&lt;/p&gt;
&lt;p&gt;Dans le genre jeu de plateforme revisité, il y a aussi l&amp;rsquo;excellent
que je viens de découvrir
. Dès que j&amp;rsquo;ai fini cet article, j&amp;rsquo;y retourne!&lt;/p&gt;
&lt;p&gt;En fait, pour finir plus vite, je colle ci-dessous un vieux brouillon d&amp;rsquo;article que j&amp;rsquo;avais commencé sur&amp;hellip;&lt;/p&gt;
&lt;h3 id="gimme-friction-baby"&gt;
&lt;/h3&gt;
&lt;p&gt;Encore un jeu en noir/blanc au look des années 70, et en plus tellement simple que j&amp;rsquo;hésite à le qualifier d&amp;rsquo; &amp;ldquo;intelligent&amp;rdquo;. Il suffit de cliquer au bon moment pour qu&amp;rsquo;un canon oscillant régulièrement tire un boulet qui s&amp;rsquo;immobilise après quelques rebonds et enfle alors jusqu&amp;rsquo;à toucher un boulet voisin ou le cadre de jeu. Chaque boulet est initialement marqué du chiffre 3, chiffre qui se décrémente à chaque choc avec un boulet en mouvement. Heurté 3 fois, le boulet disparait et le joueur marque un point. Si le boulet rebondit en bas de l&amp;rsquo;écran, on a perdu.&lt;/p&gt;
&lt;p&gt;&lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/ZPHgCx2wee4"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;em&gt;(video un peu barbante :
, ce sera plus clair)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Ça à l&amp;rsquo;air tout bête, mais il s&amp;rsquo;avère extrêmement difficile de marquer plus de 10 points. Après des heures passées sur
, la version pour
, mon record est de 17 points, assez loin des 37 points nécessaires pour figurer dans le Top25 des meilleures scores sur internet et très loin du record de 62 points détenu par CBC&amp;hellip;&lt;/p&gt;
&lt;p&gt;La difficulté du jeu tient essentiellement à la difficulté de prévoir les rebonds du boulet contre les autres : comme le savent les joueurs de billard, on peut assurer le résultat d&amp;rsquo;un choc entre 2 billes, en risquer un second, mais à partir de 3 on entre dans le royaume du chaos.&lt;/p&gt;
&lt;p&gt;Pour visualiser ceci, j&amp;rsquo;ai utilisé pour la première fois
pour montrer les rebonds possibles d&amp;rsquo;une toute petite balle qui rebondirait entre 2 grosses en fonction de l&amp;rsquo;angle de tir :&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/k_UA52jz7NI"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
est un jeu qui cache son jeu : en le prenant comme un jeu d&amp;rsquo;adresse, vous n&amp;rsquo;avez aucune chance de faire un bon score. C&amp;rsquo;est un jeu de minimisation des risques. Il ne faut absolument pas tirer une bille qui ait le moindre risque de revenir derrière la ligne, et éviter à tout prix de boucher un angle de tir &amp;ldquo;sur&amp;rdquo; futur. C&amp;rsquo;est à l&amp;rsquo;usage qu&amp;rsquo;on s&amp;rsquo;aperçoit que Gimme Friction est un jeu de stratégie redoutable.&lt;/p&gt;
&lt;h3 id="sources-de-jeux-intelligents"&gt;Sources de jeux intelligents&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;la rubrique
&lt;/li&gt;
&lt;li&gt;
, le blog des jeux basés sur la physique&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Combien de nombres palindromes &lt; N ?</title><link>https://drgoulu.com/2009/09/26/combien-de-nombres-palindromes-n/</link><pubDate>Sat, 26 Sep 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/09/26/combien-de-nombres-palindromes-n/</guid><description>&lt;p&gt;Les problèmes du
devenant vraiment très ardus, j&amp;rsquo;ai été content de trouver
 un petit challenge intéressant : déterminer rapidement le nombre de nombres palindromes inférieurs à un maximum donné.&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 148px; width: 100%;"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/37b10823a4bb4b9808e544fa55dc514d.gif" alt="17371, un nombre palindrome" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" /&gt;&lt;figcaption&gt;un nombre palindrome&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Un 
se lit indifféremment de gauche à droite ou de droite à gauche, comme 1234321 ou 567765. Outre leur aspect esthétique, ces nombres ont aussi des
.&lt;/p&gt;
&lt;p&gt;La première idée qui vient à l&amp;rsquo;esprit est de les compter (c&amp;rsquo;est du
):&lt;/p&gt;
\[sourcecode language="delphi"\]&lt;p&gt; function NumberOfPalindromes(const maxNumber : integer) : integer; var i:Integer; s:string; begin Result:=0; for i := 1 to maxNumber do begin s:=IntToStr(i); if s=ReverseString(s) then Inc(Result); end; end; &lt;/p&gt;
\[/sourcecode\]&lt;p&gt;Ca marche, mais c&amp;rsquo;est très lent : pour maxNumber=1000000000, il faut un milliard de conversions en chaine de caractères, un milliard d&amp;rsquo;inversions de chaîne, et un milliard de comparaisons. Or le résultat n&amp;rsquo;est que de 109998. Comme l&amp;rsquo;
(mais c&amp;rsquo;est de moi) :&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Si ta boucle ne fait rien 99% du temps, c&amp;rsquo;est que tu n&amp;rsquo;utilises pas le bon algorithme.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De plus, notre boucle génère tous les nombres palindromes sous forme de chaine, et on les jette.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Si tu jettes 99% des résultats, c&amp;rsquo;est que tu n&amp;rsquo;utilises pas le bon algorithme.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une autre approche, que beaucoup utilisent avant même de programmer, voire de réfléchir, est de
. C&amp;rsquo;est une excellente approche. On trouve immédiatement une
, avec une formule qui offre sur un plateau le nombre a(n) de nombres palindromes inférieurs à 10n&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt=""
src="https://drgoulu.com/posts/2009/images/e75fb46011bd71a4c4c1acbc3fdda2b9.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
La formule n&amp;rsquo;est valable que pour n entier, mais on peut tout de même la convertir en une petite fonction Delphi:&lt;/p&gt;
\[sourcecode language="delphi"\]&lt;p&gt; function NumberOfPalindromes(const maxNumber : integer) : integer; const pow10:array&lt;/p&gt;
\[0..9\]&lt;p&gt; of integer=(1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000); var n:Integer; begin n:=Round(log10(maxNumber)); if Odd(n) then Result:=11*pow10&lt;/p&gt;
\[(n-1)div 2\]&lt;p&gt;-2 else Result:=2*pow10&lt;/p&gt;
\[n div 2\]&lt;p&gt;-2; end; &lt;/p&gt;
\[/sourcecode\]&lt;p&gt;Comme il s&amp;rsquo;avère  que le
ne teste les algorithmes proposés qu&amp;rsquo;avec une puissance de 10, vous avez ci dessus une solution victorieuse, mais typique de la programmation agile : elle ne fonctionne (bien) que pour les tests ;-)&lt;/p&gt;
&lt;p&gt;Tentons maintenant de rendre notre programme correct quel que soit N, si possible sans le ralentir. On va même commencer par le rendre encore plus rapide en poussant le vice de la programmation agile (= paresse) encore plus loin:&lt;/p&gt;
\[sourcecode language="delphi"\]&lt;p&gt; function NumberOfPalindromes(const maxNumber : integer) : integer; const A050250:array&lt;/p&gt;
\[0..9\]&lt;p&gt; of integer=(0,9, 18, 108, 198, 1098, 1998, 10998, 19998, 109998); begin Result:=A050250&lt;/p&gt;
\[Round(log10(maxNumber))\]&lt;p&gt;; end; &lt;/p&gt;
\[/sourcecode\]&lt;p&gt;Le vecteur
contient directement les résultats de la formule pour n=(0),1,2,..,9. Son nom provient de
.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;algorithme ci-dessous commence par utiliser cette série pour compter les palindromes inférieurs à la puissance de 10 juste inférieure à maxNumber, puis considère successivement les chiffres de maxNumber en partant du plus significatif et compte le nombre de palindromes possibles sur les digits intermédiaires.&lt;/p&gt;
&lt;p&gt;Par exemple pour maxNumber=5832476 :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;on compte 1998 palindromes inférieurs à 1000000, le plus grand étant 999999&lt;/li&gt;
&lt;li&gt;on ajoute (5-1) fois le nombre de palindromes de 5 chiffres, soit 1000 (de 000|00 à 999|99), ce qui donne le nombre de palindromes jusqu&amp;rsquo;à 4999994&lt;/li&gt;
&lt;li&gt;on ajoute 8 fois le nombre de palindromes de 3 chiffres, soit 100. On a donc compté les palindromes jusqu&amp;rsquo;à 5799975&lt;/li&gt;
&lt;li&gt;on ajoute 2 fois les 10 nombres possibles au centre, ce qui compte jusqu&amp;rsquo;à 5829285&lt;/li&gt;
&lt;li&gt;reste à ajouter les (2+1) nombres palindromes obtenus en changeant le chiffre central : 5830385, 5831385 et 5832385&lt;/li&gt;
&lt;/ol&gt;
\[sourcecode language="delphi"\]&lt;p&gt; function NumberOfPalindromes(const maxNumber : integer) : integer; const A050250:array&lt;/p&gt;
\[0..18\]&lt;p&gt; of integer =(0,9, 18, 108, 198, 1098, 1998, 10998, 19998, 109998, 199998, 1099998, 1999998, 10999998, 19999998, 109999998, 199999998, 1099999998, 1999999998); const pow10:array&lt;/p&gt;
\[0..9\]&lt;p&gt; of integer =(1,10,100,1000,10000,100000, 1000000,10000000,100000000,1000000000); var n,i,j,k:Integer; d:array&lt;/p&gt;
\[0..18\]&lt;p&gt; of integer; // digits begin i:=0; n:=maxNumber; while n&amp;gt;0 do begin // extract digits d&lt;/p&gt;
\[i\]&lt;p&gt;:=n mod 10; n:=n div 10; inc(i); end; n:=i-1; // n=Trunc(log10(maxNumber)) Result:=A050250&lt;/p&gt;
\[n\]&lt;p&gt;; i:=n; j:=0; k:=n div 2; dec(d&lt;/p&gt;
\[n\]&lt;p&gt;); // because we counted palindromes to 1000..00 while i-j&amp;gt;=2 do begin // loop from outer digits to inner Result:=result+d&lt;/p&gt;
\[i\]&lt;p&gt;*(pow10&lt;/p&gt;
\[k\]&lt;p&gt;); dec(i); inc(j); dec(k); end; inc(Result,d&lt;/p&gt;
\[i\]&lt;p&gt;); // handle 1 or 2 center digits if d&lt;/p&gt;
\[j\]&lt;p&gt;&amp;gt;=d&lt;/p&gt;
\[i\]&lt;p&gt; then inc(Result); end; &lt;/p&gt;
\[/sourcecode\]&lt;p&gt;Cet algorithme étant nettement plus rapide et compact que les solutions existantes du challenge, je viens de le soumettre au
bien qu&amp;rsquo;il y ait encore une petit bulle&amp;hellip; Pour certains maxNumber &amp;ldquo;rares&amp;rdquo;, le résultat est 1 de trop. Saurez-vous trouver pourquoi avant moi ?&lt;/p&gt;</description></item><item><title>1,2,6,42,1806, Combien ?</title><link>https://drgoulu.com/2009/06/10/126421806-combien/</link><pubDate>Wed, 10 Jun 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/06/10/126421806-combien/</guid><description>&lt;p&gt;
Vous avez peut-être reçu un e-mail vous garantissant un QI &amp;gt; 120 si vous arrivez à trouver le terme suivant de la suite entière 1,2,6,42, 1806. Et vous avez peut-être été tout fier de remarquer que puisque 42/6=7, peut-être que 42*43=1806 &amp;hellip; calculatrice &amp;hellip; gagné!&lt;/p&gt;
&lt;p&gt;Donc le prochain terme est 1806*1807=3263442 et hop! QI &amp;gt; 120, vous vous sentez intelligent et heureux d&amp;rsquo;un coup.&lt;/p&gt;
&lt;p&gt;Pourtant
3270666. En effet, chaque entier de la suite est aussi égal au précédent multiplié par le nombre premier qui lui est juste supérieur, et comme le nombre premier suivant 1806 est 1811, 1806*1811=3270666. Quel QI je mérite pour ça ? Au moins 130, à vue de nez.&lt;/p&gt;
&lt;p&gt;On peut aussi soutenir qu&amp;rsquo;il n&amp;rsquo;y a pas de terme suivant. En effet 1,2,6,42 et 1806 sont les seuls entiers n tels que m^(n+1) = m modulo n quel que soit m. Il n&amp;rsquo;y en a pas d&amp;rsquo;autre. Pour démontrer ça, je dirais qu&amp;rsquo;un QI de 140, ça aide&amp;hellip;&lt;/p&gt;
&lt;p&gt;Mais pas besoin d&amp;rsquo;un QI élevé pour
;-)&lt;/p&gt;</description></item><item><title>Programmer pour le fun</title><link>https://drgoulu.com/2009/02/23/project_euler/</link><pubDate>Mon, 23 Feb 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/02/23/project_euler/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2009/images/a9192f1b2a56a4bbaee679259c557e57_hu_63e352f6a676822a.webp 230w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2009/images/a9192f1b2a56a4bbaee679259c557e57_hu_63e352f6a676822a.webp"
width="230"
height="230"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Amis des casse-tête mathématiques ardus et de la programmation d&amp;rsquo;algorithmes optimisés, bonjour!&lt;/p&gt;
&lt;p&gt;Je viens de découvrir
, et j&amp;rsquo;ai honte de ne pas l&amp;rsquo;avoir trouvé avant. Ce site propose 233 problèmes (et environ un de plus chaque semaine environ) pouvant parfois être résolus avec un papier et un crayon propulsé par un cerveau en ébullition, mais pour la plupart requièrent  quelques lignes de code bien pensées et un stupide esclave électronique pour les exécuter.&lt;/p&gt;
&lt;p&gt;Une fois inscrit sur le site, vous pouvez soumettre vos solutions aux problèmes dans l&amp;rsquo;ordre qui vous plait et chaque bonne réponse vous apporte instantanément:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la possibilité d&amp;rsquo;accéder à un forum où les solutions sont comparées et discutées. C&amp;rsquo;est en général là qu&amp;rsquo;on commence à avoir mal au front, quand on découvre des algorithmes 1000x plus rapides que ceux qu&amp;rsquo;on s&amp;rsquo;est escrimé à mettre au point, ou pire, la petite formule qui tue&amp;hellip;&lt;/li&gt;
&lt;li&gt;un bon point. Après 25 bonnes réponses vous entrez dans le tableau des
et pouvez espérer rejoindre un jour la
qui ont résolu tous les problèmes jusqu&amp;rsquo;ici.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il faut dire que les premiers problèmes sont relativement simples, par exemple les 17 que j&amp;rsquo;ai déjà résolus sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;additionner tous les entiers intérieurs à 1000 qui sont multiples de 3 ou 5&lt;/li&gt;
&lt;li&gt;trouver la somme de tous les nombres pairs de la
inférieurs à 4'000'000&lt;/li&gt;
&lt;li&gt;trouver le plus grand facteur premier de 600'851'475'143&lt;/li&gt;
&lt;li&gt;trouver le plus grand palindrome formé par le produit de 2 nombres de 3 chiffres&lt;/li&gt;
&lt;li&gt;quel est le plus petit nombre divisible par tous les entiers de 1 à 20 ? (facile. celui là je l&amp;rsquo;ai fait à la main)&lt;/li&gt;
&lt;li&gt;quelle est la différence entre le carré de la somme des 100 premiers entiers et la somme du carré de ces même nombres ?&lt;/li&gt;
&lt;li&gt;trouver le 10001ème nombre premier&lt;/li&gt;
&lt;li&gt;trouver le plus grand produit de 5 chiffres consécutifs dans un nombre à 1000 chiffres&lt;/li&gt;
&lt;li&gt;trouver le seul
dont la somme a+b+c=1000&lt;/li&gt;
&lt;li&gt;calculer la somme des nombres premiers inférieurs à 2'000'000&lt;/li&gt;
&lt;li&gt;quel est le premier
ayant plus de 500 diviseurs ?&lt;/li&gt;
&lt;li&gt;quels sont les 10 premiers chiffres de la somme de 100 nombre de 50 chiffres donnés?&lt;/li&gt;
&lt;li&gt;trouver le nombre inférieur à 1'000'000 générant la plus longue
&lt;/li&gt;
&lt;li&gt;en partant d&amp;rsquo;un coin d&amp;rsquo;une grille de 20x20, combien y&amp;rsquo;a-t-il de chemins au coin opposé ? (
&amp;hellip;)&lt;/li&gt;
&lt;li&gt;quelle est la somme des chiffres de  21000?&lt;/li&gt;
&lt;li&gt;quel est le premier terme supérieur à 101000 de la suite de Fibonacci ? (et si je vous disais qu&amp;rsquo;on peut le trouver sans calculer les termes précédents ?)&lt;/li&gt;
&lt;li&gt;trouver la somme des chiffres de 100! (factorielle&amp;hellip;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Certains de ces problèmes exigent de pouvoir manipuler de grands nombres, ce qui est une force du langage
, que j&amp;rsquo;aime de plus en plus. On peut par exemple obtenir la somme des chiffres de la factorielle de 100 en une seule ligne* combinant la
et la fonction
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reduce(lambda x, y: x + y, [int(i) for i in str(reduce(lambda x, y: x * y, range(1, 100)))])
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Bon, jusqu&amp;rsquo;ici j&amp;rsquo;ai fait le facile : même avec une approche un peu brutale, on s&amp;rsquo;en sort. Mais rapidement la complexité fait son apparition au carré : au niveau mathématique et au niveau algorithmique, condamnant le programmeur peu subtil à patienter des minutes, des heures ou des siècles devant un sablier virtuel &amp;hellip;&lt;/p&gt;
&lt;p&gt;Je vois encore quelques problèmes liés à des sujets déjà abordés sur Dr.Goulu comme:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;trouver le polynôme _n_² + &lt;em&gt;an&lt;/em&gt; + &lt;em&gt;b&lt;/em&gt;, où|&lt;em&gt;a&lt;/em&gt;| &amp;lt; 1000 et|&lt;em&gt;b&lt;/em&gt;| &amp;lt; 1000 qui produit le plus de
&lt;/li&gt;
&lt;li&gt;quel nombre premier inférieur à 1'000'000 est la
?&lt;/li&gt;
&lt;li&gt;combien existe-t-il de
inférieurs à 10'000 ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il y a encore environ entre 20 et 50 problèmes que j&amp;rsquo;espère pouvoir résoudre à raison d&amp;rsquo;un  par soirée.&lt;/p&gt;
&lt;p&gt;Après, ce sera &lt;strong&gt;l&amp;rsquo;enfer&lt;/strong&gt; mais j&amp;rsquo;espère vous y retrouver, ami lecteur &amp;hellip; (insérer un rire
ici)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note* dans le forum on découvre une solution en 13 caractères seulement, en
évidemment: +/&amp;quot;.&amp;ldquo;0&amp;rdquo;:!100x&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2009/images/Dr_Goulu_hu_e37231ec7db728c0.webp 200w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2009/images/Dr_Goulu_hu_e37231ec7db728c0.webp"
width="200"
height="60"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Soluces de Noël</title><link>https://drgoulu.com/2009/02/22/soluces-de-noel/</link><pubDate>Sun, 22 Feb 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/02/22/soluces-de-noel/</guid><description>&lt;p&gt;Voici enfin quelques solutions aux
&lt;/p&gt;
&lt;h3 id="le-jeu-des-nénuphars"&gt;le jeu des nénuphars&lt;/h3&gt;
&lt;p&gt;Pour gagner à
, j&amp;rsquo;ai commencé par &amp;ldquo;tricher&amp;rdquo; en examinant le petit programme JavaScript qui s&amp;rsquo;occupe de tout. On y trouve ceci :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;positions&lt;/span&gt; &lt;span class="n"&gt;gagnantes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;gagnant&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="ne"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;777&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;667&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;557&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;447&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;337&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;227&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;456&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;236&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;135&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En codantla position de chaque grenouille par un chiffre de 0 à 7, la position de départ est notée 024 et la position gagnante finale 777. (On remarque au passage que les positions obtenues en permutant les lignes de nénuphars sont stratégiquement équivalentes, donc on peut représenter toutes ces permutations par un seul code dont les 3 chiffres sont triés dans l&amp;rsquo;ordre croassant )&lt;/p&gt;
&lt;p&gt;Pour y arriver, si on a une grenouille sur 7, il faut s&amp;rsquo;assurer que les deux autres restent au même niveau : les positions 227,337,447,557 et 667 sont gagnantes parce que l&amp;rsquo;adversaire n&amp;rsquo;arrive jamais à faire 777 en un coup alors qu&amp;rsquo;on peut dans tous les cas se remettre en position gagnante.&lt;/p&gt;
&lt;p&gt;Le début de la partie est plus compliqué, et c&amp;rsquo;est là que tout se joue. Pour comprendre pourquoi 135, 236 et 456 sont des positions gagnantes, j&amp;rsquo;ai fait ce graphe.&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 471px; width: 100%;"&gt;&lt;a href="https://drgoulu.com/wp-content/uploads/HLIC/a4a08144f1c5337e35f952ea5b03384f.png" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/a4a08144f1c5337e35f952ea5b03384f_hu_cbe2b1a989f09299.webp" srcset="https://drgoulu.com/posts/2009/images/a4a08144f1c5337e35f952ea5b03384f_hu_cbe2b1a989f09299.webp 320w, https://drgoulu.com/posts/2009/images/a4a08144f1c5337e35f952ea5b03384f_hu_5db5e68449aa2a0.webp 480w, https://drgoulu.com/posts/2009/images/a4a08144f1c5337e35f952ea5b03384f_hu_716a4b504a5edbcc.webp 620w" sizes="(max-width: 640px) 100vw, 471px" alt="nenuphars2" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;(cliquer pour agrandir)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;On y voit:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;que comme les positions xx7 , les positions 135, 236 ou 456 sont bien gagnantes car  tout mouvement depuis ces positions permet ensuite à un adversaire jouant bien de  revenir à une position gagnante.&lt;/li&gt;
&lt;li&gt;il y a encore 3 autres positions gagnantes : 025, 034 et 124, et celles-ci sont accessibles à partir de la position de départ 024. Ca signifie qu&amp;rsquo;en suivant le graphe**, celui qui commence le jeu est sur de gagner !**&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Merci et Bravo à
, qui m&amp;rsquo;a soumis par mail son analyse de ce problème sans &amp;ldquo;tricher&amp;rdquo; en lorgnant le code. Cet article est le résultat de la combinaison de nos idées.&lt;/p&gt;
&lt;h3 id="les-boulets-de-canon"&gt;Les boulets de canon&lt;/h3&gt;
&lt;p&gt;les
aux problèmes des quarts de finales de la FFJM sont disponibles. J&amp;rsquo;ai surtout ramé au problème No 16 pour lequel je n&amp;rsquo;ai pas trouvé de méthode, et au dernier, celui des boulets de canon, qui est très beau.&lt;/p&gt;
&lt;p&gt;Une pile de boulets formée sur une base rectangulaire se termine par une couche ne contenant qu&amp;rsquo;une ligne de m boulets. La couche juste inférieure contient 2 lignes de m+1 boulets, la suivante 3 lignes de m+2 boulets et ainsi de suite. La i-ème couche contient donc i.(m+i-1) boulets et le nombre de boulets d&amp;rsquo;une pile contenant c couches est de&lt;/p&gt;
&lt;p&gt;$n= sum_{i=1}^{c} i.(m+i-1) = m.sum_{i=1}^{c} i + m.sum_{i=1}^{c} i^2 -c$&lt;/p&gt;
&lt;p&gt;En utilisant la formule de la somme des premiers entiers et celle de la
, on obtient n=c.(c+1).(3m+2c-2)/6, résultat que l&amp;rsquo;on retrouve déjà dans un &amp;ldquo;
&amp;rdquo; de 1813!&lt;/p&gt;
&lt;p&gt;Dans le problème posé, la largeur de la pile de base étant égale à m, on a c=m et donc n=m.(m+1).(5m-2)/6 . Reste à trouver la valeur de m donnant un n qui soit un carré parfait. C&amp;rsquo;est vite fait à la main : m=6 donne 14^2=196 boulets. Mais il existe une autre solution: m=49 donne 99'225 boulets, le carré de 49. Sans Python, j&amp;rsquo;ai raté celle là &amp;hellip;&lt;/p&gt;</description></item><item><title>Casse-tête binaire</title><link>https://drgoulu.com/2009/02/03/casse-tete-binaire/</link><pubDate>Tue, 03 Feb 2009 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2009/02/03/casse-tete-binaire/</guid><description>&lt;p&gt;Je viens d&amp;rsquo;inventer le problème suivant, qui est en fait une variation informatique d&amp;rsquo;un
membre du C@fé des Sciences.&lt;/p&gt;
&lt;p&gt;Un registre de microprocesseur contient un mot de 32 bits quelconque, mais dont exactement 8 bits sont à 1, les autres à 0 (par exemple 01001000000000111000010000101000)&lt;/p&gt;
&lt;p&gt;Comment faire pour modifier les premiers 8 bits du mots de façon à ce qu&amp;rsquo;ils comportent autant de bits à &amp;lsquo;1&amp;rsquo; qu&amp;rsquo;il n&amp;rsquo;y en a au total dans les 24 bits suivant (soit 6 dans l&amp;rsquo;exemple ci-dessus), et ceci en une seule instruction du processeur ?&lt;/p&gt;
&lt;figure class="alignright" style="max-width: 500px; width: 100%;"&gt;&lt;a href="http://www.flickr.com/photos/syntopia/2058406738/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2009/images/799b28c713fe0b24c23115571899f28f_hu_bb1e9f7a406c1523.webp" srcset="https://drgoulu.com/posts/2009/images/799b28c713fe0b24c23115571899f28f_hu_bb1e9f7a406c1523.webp 320w, https://drgoulu.com/posts/2009/images/799b28c713fe0b24c23115571899f28f_hu_559ba21440b75d8f.webp 480w, https://drgoulu.com/posts/2009/images/799b28c713fe0b24c23115571899f28f_hu_f553c71f9bfab4a7.webp 500w" sizes="(max-width: 640px) 100vw, 500px" alt="Binary Kite par Syntopia" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Si vous n&amp;rsquo;êtes pas familier avec l&amp;rsquo;
, disons que vous disposez des mêmes opérations qu&amp;rsquo;une calculatrice, mais en binaire : addition, soustraction, ansi que des
. Une instruction, c&amp;rsquo;est une de ces opérations suivie d&amp;rsquo;une
.&lt;/p&gt;</description></item><item><title>Maths de Noël</title><link>https://drgoulu.com/2008/12/23/maths-de-noel/</link><pubDate>Tue, 23 Dec 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/12/23/maths-de-noel/</guid><description>&lt;p&gt;Trop mangé ? trop dépensé ? trop dormi ? trop culpabilisé ? Prenez de bonnes résolutions et nourissez votre cerveau et celui de vos enfants avec quelques casse-tête et jeux amusants trouvés pour vous sur le Web.&lt;/p&gt;
&lt;p&gt;Pour les petits dès 4 ans et jusqu&amp;rsquo;à 10, 15, 20, 30, 45 ,
offre une ribambelle de jeux intelligents à jouer seul ou à deux. Certains jeux de Lulu sont directement en rapport avec l&amp;rsquo;activité scolaire, d&amp;rsquo;autres développent simplement une réflexion logique, comme &amp;ldquo;
&amp;rdquo;. En fait, le
de ce jeu tout simple m&amp;rsquo;énerve un petit peu car je n&amp;rsquo;ai pas encore réussi à colorier les 51 boules après quelques essais&amp;hellip; Je finis l&amp;rsquo;article et j&amp;rsquo;y retourne&amp;hellip;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Pour les plus grands, il y a
, site créé par un enseignant suisse. on y trouve de nombreux jeux assez scolaires, mais aussi une
vers de nombreux jeux de logique trouvés sur le web. Il y a les classiques Reversi, Solitaire, Tetris et autres Pentominos, mais aussi les excellents Rush Hour, et &amp;ldquo;La Bonne Face&amp;rdquo;, un exercice de vision dans l&amp;rsquo;espace indispensable aux futurs mécaniciens.&lt;/p&gt;
&lt;p&gt;Au bas de la page, les 5 &amp;ldquo;jeux pour bien s&amp;rsquo;arracher les cheveux&amp;rdquo; méritent un détour, avec mention spéciale pour &amp;ldquo;
&amp;rdquo;, un petit casse-tête très énervant sur lequel j&amp;rsquo;ai perdu déjà un jour de vacances (merci J.-C&amp;hellip;)&lt;/p&gt;
&lt;p&gt;
On joue contre l&amp;rsquo;ordinateur. Chacun son tour on peut faire avancer une grenouille d&amp;rsquo;autant de cases que l&amp;rsquo;on veut vers la droite. Le joueur qui place la dernière grenouille à droite a gagné. Le problème c&amp;rsquo;est qu&amp;rsquo;on perd tout le temps, et qu&amp;rsquo;on n&amp;rsquo;arrive même pas à comprendre la stratégie suivie par l&amp;rsquo;ordinateur pour gagner (à moins de visualiser le code JavaScript du programme&amp;hellip; et encore&amp;hellip;). Mais là je commence à comprendre. Solution bientôt.&lt;/p&gt;
&lt;p&gt;Plusieurs liens de
renvoient sur le merveilleux site
. Ce site est bourré d&amp;rsquo;explications, mais aussi d&amp;rsquo;animations et de programmes en Java illustrant une foultitude de problèmes plus ou moins connus et plus ou moins liés aux maths. Il y a tellement de choses là que je l&amp;rsquo;ajoute immédiatement à
et je vous en recause. (Un magnifique site de plus qui mériterait d&amp;rsquo;être modernisé, doté d&amp;rsquo;un flux RSS, d&amp;rsquo;un système de commentaires, bref &amp;ldquo;bloguifié&amp;rdquo;&amp;hellip;)&lt;/p&gt;
&lt;p&gt;Le niveau au dessus, c&amp;rsquo;est &amp;ldquo;
&amp;rdquo;, qui porte bien son nom. Les problèmes proposés &amp;ldquo;dans nos classes&amp;rdquo; sont déjà bien corsés, mais la catégorie &amp;ldquo;remue-méninges&amp;rdquo; est clairement réservée aux pros des maths&amp;hellip;&lt;/p&gt;
&lt;p&gt;Si vous avez lu l&amp;rsquo;article jusque là, vous êtes un adepte des jeux mathématiques et donc un compétiteur en puissance. Quel que soit votre niveau en maths, que vous soyez à l&amp;rsquo;école primaire ou Docteur ès Sciences, vous pouvez encore vous inscrire au Championnat International de Jeux Mathématiques organisé par les fédérations
,
(et autres ?). Il suffit de résoudre une
correspondant à votre catégorie et de renvoyer
avant le 1er janvier si vous êtes Français, et
avant le 15 janvier si vous êtes Suisse (on n&amp;rsquo;est pas plus lents, on est plus rapides à dépouiller les résultats&amp;hellip;)&lt;/p&gt;</description></item><item><title>Python : un petit Sudoku pour commencer</title><link>https://drgoulu.com/2008/10/12/python/</link><pubDate>Sun, 12 Oct 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/10/12/python/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/c2281c83670e31d8aaab7cb642b824db_hu_8f3a76d4d0cffefc.webp 320w, https://drgoulu.com/posts/2008/images/c2281c83670e31d8aaab7cb642b824db_hu_ff85c168c6ba8746.webp 480w, https://drgoulu.com/posts/2008/images/c2281c83670e31d8aaab7cb642b824db_hu_230bd27ab1f5d3ef.webp 601w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/c2281c83670e31d8aaab7cb642b824db_hu_8f3a76d4d0cffefc.webp"
width="601"
height="203"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Ces temps-ci, je découvre
, un langage de programmation très apprécié en particulier dans la communauté scientifique. Ce &amp;ldquo;
&amp;rdquo; intègre des concepts développés dans plusieurs langages récents, ce qui en fait peut-être le langage le plus complet disponible actuellement.&lt;/p&gt;
&lt;p&gt;Pour une première approche de ce langage, je vous propose l&amp;rsquo;analyse du&amp;hellip;&lt;/p&gt;
&lt;h3 id="plus-court-solveurde-sudoku"&gt;Plus Court Solveur de Sudoku&lt;/h3&gt;
&lt;p&gt;Voici un  programme en Python de 173 caractères seulement qui serait le plus court
connu actuellement :&lt;/p&gt;
\[sourcecode lang="python"\]&lt;p&gt;def r(a): i=a.find(&amp;lsquo;0&amp;rsquo;) if i&amp;lt;0:print a &lt;/p&gt;
\[m in\[(i-j)%9\*(i/9^j/9)\*(i/27^j/27|i%9/3^j%9/3)or a\[j\]&lt;p&gt;for j in range(81)]or r(a&lt;/p&gt;
\[:i\]&lt;p&gt;+m+a&lt;/p&gt;
\[i+1:\]&lt;p&gt;)for m in`14**7*9`]r(raw_input())&lt;/p&gt;
\[/sourcecode\]&lt;p&gt;Ce programme est extrêmement compact et condensé, voire cryptique à l&amp;rsquo;instar des
. Ce n&amp;rsquo;est pas forcément la meilleure façon de programmer, mais ça révèle souvent la puissance cachée de certains langages. Ce programme est décrit en anglais et en détail
, mais voici son principe en gros et en français:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;def r(a): ... r(raw_input())&lt;/code&gt; // définit la fonction &amp;ldquo;r&amp;rdquo; qui résout le sudoku, puis on l&amp;rsquo;appelle en passant en paramètre ce que l&amp;rsquo;utilisateur a entré au clavier. Ca doit être une chaine de 81 caractères contenant ligne par ligne les chiffres de 1 à 9 donnés, et des 0 aux emplacements vides.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;i=a.find('0') if i&amp;lt;0:print a&lt;/code&gt; // au début de la fonction, on cherche le premier emplacement vide. Si on ne le trouve pas, on imprime le sudoku résolu&lt;/p&gt;
&lt;p&gt;la partie principale de la fonction utilise deux concepts puissants de Python:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;la &amp;ldquo;lazy evaluation&amp;rdquo; qui fait que l&amp;rsquo;expression &amp;ldquo;a or b&amp;rdquo; est équivalente à &amp;ldquo;if not(a):b&amp;rdquo;&lt;/li&gt;
&lt;li&gt;la &amp;ldquo;compréhension de liste&amp;rdquo; qui permet de créer une liste en écrivant une boucle à l&amp;rsquo;intérieur de
\[crochets\]. Par exemple &amp;ldquo;l =
\[x\*\*2 for x in range(10)\]&amp;rdquo; crée la liste des carrés des 10 premiers nombres entiers&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ainsi cette expression &lt;code&gt;[(i-j)%9*(i/9^j/9)*(i/27^j/27|i%9/3^j%9/3)or a[j]for j in range(81)]&lt;/code&gt; fournit la &amp;ldquo;liste d&amp;rsquo;exclusion&amp;rdquo; contenant les chiffres qui ne peuvent pas figurer dans le trou à la position i. On l&amp;rsquo;obtient en parcourant toutes les celllules et en ajoutant à la liste la valeur des cases a&lt;/p&gt;
\[j\]&lt;p&gt; situées sur la même ligne, la même colonne ou dans le même bloc que i. Le grand test compliqué détermine ces conditions en utilisant les opérateurs modulo (%), ou binaire (|) et ou exclusif (^).&lt;/p&gt;
&lt;p&gt;Finalement, le &lt;code&gt;[m in [...] or r(a[:i]+m+a[i+1:])for m in`14**7*9`]&lt;/code&gt; remplit successivement la grille avec les chiffres possibles en utilisant la &amp;rsquo;lazy evaluation&amp;rsquo; une fois de plus : ce n&amp;rsquo;est que si le chiffre m n&amp;rsquo;est pas dans la liste d&amp;rsquo;exclusion qu&amp;rsquo;on execute la partie droite du or, laquelle appelle récursivement la fonction r en lui passant la grille en paramètre la grille &lt;code&gt;a[:i]+m+a[i+1:]&lt;/code&gt;. Ici , l&amp;rsquo;opérateur + sert à concaténer des listes : d&amp;rsquo;abord les i-èmes premières cases, puis le chiffre m proposé pour la case vide, puis les cases à partir de la i+1 ème.&lt;/p&gt;
&lt;p&gt;Ce programme utilise donc une approche &amp;ldquo;force brute&amp;rdquo; loin d&amp;rsquo;être optimale en temps de calcul : on essaie les chiffres possibles dans chaque case vide jusqu&amp;rsquo;à ce que ça marche.&lt;/p&gt;
&lt;p&gt;Reste à découvrir une astuce de geek que je ne connaissais pas : 14**7*9 vaut 948721536, un nombre qui contient les chiffres 123456789, dans le désordre, mais ça va aussi pour notre application. Les backquotes ´&amp;hellip;´ servent à former une chaine, comme d&amp;rsquo;ailleurs la fonction str(). L&amp;rsquo;avantage de ´14**7*9´sur ´123456789´ ? ben c&amp;rsquo;est évident : il faut deux bytes de moins &amp;hellip;&lt;/p&gt;</description></item><item><title>Sommes Egales de Nombres Premiers Consécutifs</title><link>https://drgoulu.com/2008/06/03/sommes-egales-de-nombres-premiers-consecutifs/</link><pubDate>Tue, 03 Jun 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/06/03/sommes-egales-de-nombres-premiers-consecutifs/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/389c66e7ddab342c9a24fd6e80fd3c65_hu_fd262a323e2485f5.webp 320w, https://drgoulu.com/posts/2008/images/389c66e7ddab342c9a24fd6e80fd3c65_hu_b848df796048d1a5.webp 480w, https://drgoulu.com/posts/2008/images/389c66e7ddab342c9a24fd6e80fd3c65_hu_24c0678be981a15f.webp 512w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/389c66e7ddab342c9a24fd6e80fd3c65_hu_fd262a323e2485f5.webp"
width="512"
height="512"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Le quatrième et dernier problème de la
mérite un article à lui tout seul. (J&amp;rsquo;ai parlé des trois autres dans
)&lt;/p&gt;
&lt;p&gt;Il s&amp;rsquo;agit de trouver le plus petit
P qui soit en même temps :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la somme de 9 nombres premiers consécutifs&lt;/li&gt;
&lt;li&gt;la somme de 119 nombres premiers consécutifs&lt;/li&gt;
&lt;li&gt;la somme de 215 nombres premiers consécutifs&lt;/li&gt;
&lt;li&gt;et la somme de 675 nombres premiers consécutifs !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(les nombres 9, 119, 215 et 675 sont différents pour chaque concurrent&amp;hellip;)&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est étonnant, mais beaucoup de nombres premiers sont des sommes de nombres premiers consécutifs (abrégé SNPC ci après), par exemple :&lt;/p&gt;
&lt;p&gt;5+7+11+13+17 = 53 7+11+13+17+19 =67 11+13+17+19+23 =83&lt;/p&gt;
&lt;p&gt;De plus, il est fréquent qu&amp;rsquo;un même nombre premier soit égal à plusieurs SNPC. Par exemple sur
on mentionne:&lt;/p&gt;
&lt;p&gt;34421 = 269 + … + 709 (71 nombres premiers) 34421 = 1429 + … + 1571 (23 nombres premiers) 34421 = 3793 + … + 3853 (9 nombres premiers) 34421 = 4889 + … + 4937 (7 nombres premiers) 34421 = 11467 + … + 11483 (3 nombres premiers)&lt;/p&gt;
&lt;p&gt;Le nombre P recherché n&amp;rsquo;est donc peut-être pas très grand, d&amp;rsquo;autant que la somme des 675 premiers nombres premiers ne vaut que 1'578'242. Il n&amp;rsquo;y a probablement pas besoin de calculer en &amp;ldquo;bigint&amp;rdquo;, les entiers sur 32 bits, voire 64 disponibles avec n&amp;rsquo;importe quel langage de programmation devraient suffire. Par contre, il est pratique de disposer de fonctions prédéfinies pour manipuler des nombres premiers, c&amp;rsquo;est pourquoi j&amp;rsquo;ai choisi d&amp;rsquo;utiliser
.&lt;/p&gt;
&lt;p&gt;Les fonctions suivantes suffisent pour résoudre le problème posé: &lt;em&gt;(code modifié le 4/6/8 suite aux commentaires de b0z0)&lt;/em&gt;&lt;/p&gt;
\[gist id="0e35207dedf4e337c937"\]&lt;p&gt;La fonction SCP (Sum of Consecutive Primes) renvoie la somme des n nombres premiers consécutifs en commençant par le i-ème nombre premier en utilisant la fonction prédéfinie Prime&lt;/p&gt;
\[j\]&lt;p&gt; qui renvoie directement le j-ème nombre premier.&lt;/p&gt;
&lt;p&gt;Cette somme n&amp;rsquo;étant pas forcément un nombre premier, la fonction PSP (Prime Sum of Primes) appelle répétitivement SCP en augmentant i jusqu&amp;rsquo;à ce que la somme soit un nombre premier, vérifié grâce au test de primalité
, une fonction non triviale bien utile ici. Pour une raison expliquée plus bas, PSP renvoie une paire de résultats : la somme, et l&amp;rsquo;indice du premier nombre premier de la somme.&lt;/p&gt;
&lt;p&gt;Enfin, la fonction CPSP (Compound Prime Sum of Primes) implante l&amp;rsquo;algorithme que j&amp;rsquo;ai inventé pour la circonstance. Elle prend en paramêtre la liste des nombres de nombres premiers consécutifs sommés. Pour résoudre notre problème, on appellera  CPSP&lt;/p&gt;
\[{675, 215, 119, 9}\]&lt;ol&gt;
&lt;li&gt;on initialise une liste p avec les n résultats de PSP obtenus pour chacun des nombres de nombres premiers consécutifs à additioner. Ainsi, pour CPSP
\[{675, 215, 119, 9}\], p est initialisé à {{1583291,2},{149993,15},{41641,10},{127,2}}. Autrement dit, 1583291 est le plus petit nombre premier qui soit la somme de 675 nombres premiers consécutifs, et cette somme commence avec le 2ème nombre premier. 149993 est le plus petit nombre premier qui soit la somme de 215 nombres premiers, en commençant par le 15ème, et ainsi de suite&lt;/li&gt;
&lt;li&gt;par paresse (qualité indispensable chez les programmeurs&amp;hellip;) , la détection de la fin de l&amp;rsquo;algorithme est réduite au minimum vital : dès que la liste p n&amp;rsquo;est plus modifiée par l&amp;rsquo;algorithme, on arrête&lt;/li&gt;
&lt;li&gt;Pour chaque élément de la liste p en commençant par le deuxième, on regarde si la somme est inférieure à la somme du premier indice. Si c&amp;rsquo;est le cas, on calcule une somme supérieure en incrémentant l&amp;rsquo;indice correspondant, jusqu&amp;rsquo;à ce que la somme soit égale à la première, ou la dépasse. Après cette étape, la liste p devient {{1583291,10},{1600981,840},{1589563,1526},{1584829,15997}} : on voit que les sommes 2,3 et 4 ont dépassé la somme 1&lt;/li&gt;
&lt;li&gt;Si la somme 1 est plus petite que la somme 2, on augmente la somme 1 jusqu&amp;rsquo;à ce que&amp;rsquo;elle atteigne ou dépasse la somme 2. On arrive ainsi à {{1623917,10},{1600981,840},{1589563,1526},{1584829,15997}}. On boucle au point 2&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Les trois dernières boucles donnent les listes suivantes qui montrent bien le fonctionnement de l&amp;rsquo;algorithme:&lt;/p&gt;
&lt;p&gt;{{8256361,1127},{8112103,3883},{8115539,6728},{8112787,71376}} {{8275409,1130},{8259353,3947},{8264171,6833},{8256383,72536}} {{8275409,1130},{8275409,3954},{8275409,6841},{8275409,72696}}&lt;/p&gt;
&lt;p&gt;et voilà : 8'275'409 est égale à la somme des:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;675 nombres premiers consécutifs à partir du 1130-ème (9109)&lt;/li&gt;
&lt;li&gt;215 nombres premiers consécutifs à partir du 3954-ème (37339)&lt;/li&gt;
&lt;li&gt;119 nombres premiers consécutifs à partir du 6841-ème (68821)&lt;/li&gt;
&lt;li&gt;9 nombres premiers consécutifs à partir du 72696-ème (919421)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quelques minutes pour choisir le bon outil (Mathematica) + quelques minutes de programmation + 30 secondes de calcul, c&amp;rsquo;est gagné !&lt;/p&gt;</description></item><item><title>Recrutement et Casse-Tête</title><link>https://drgoulu.com/2008/05/17/recrutement-et-casse-tete/</link><pubDate>Sat, 17 May 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/05/17/recrutement-et-casse-tete/</guid><description>&lt;p&gt;Si vous souhaitez travailler chez Google ou facebook, voici un petit tuyau : cultivez l&amp;rsquo;art de résoudre des casse-tête, et montrez vos talents sur internet.&lt;/p&gt;
&lt;p&gt;
, on testera votre raisonnement logique dès les premières minutes du premier interview téléphonique, puis on vous cuisinera sur de nombreux autres problèmes plus mathématico-informatiques lors des interviews suivants. En parallèle, vous recevrez un e-mail qui vous incitera à participer aux
, un site extraordinaire sponsorisé par de nombreuses entreprises qui recherchent à la fois des solutions originales à des problèmes très pointus et des développeurs de haut niveau. Un très bon endroit pour se faire remarquer (pas seulement par Google) si vous êtes un mordu d&amp;rsquo;algorithmes. Dommage qu&amp;rsquo;on doive s&amp;rsquo;engager à ne pas parler des problèmes à l&amp;rsquo;extérieur du site TopCoder, parce qu&amp;rsquo;ils sont très jolis.&lt;/p&gt;
&lt;p&gt;Google lance aussi des &amp;ldquo;chasses au trésor&amp;rdquo; sur internet. Là je viens de commencer à participer à
, qui commence très fort: si le robot ci-dessous ne peut aller que vers la droite ou vers le bas, combien y&amp;rsquo;a-t-il de chemins distincts qui le mènent au but ?&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/a257750efe5059e695eed9af28ef2bc4_hu_2c4d2a69bd9a618e.webp 320w, https://drgoulu.com/posts/2008/images/a257750efe5059e695eed9af28ef2bc4_hu_bbb066b352bf2cd7.webp 480w, https://drgoulu.com/posts/2008/images/a257750efe5059e695eed9af28ef2bc4_hu_5dde9e8079e39906.webp 548w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/a257750efe5059e695eed9af28ef2bc4_hu_2c4d2a69bd9a618e.webp"
width="548"
height="251"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Vous avez trouvé ? En comptant à la main ? Bien. Mais en fait, pour la chasse au trésor, il faut répondre pour un damier de 56x32 cases (le nombre change pour chaque participant) &amp;hellip; Dans ce cas, la réponse est 232059241971866600926656, ce qui suppose de
et de disposer d&amp;rsquo;une bonne calculatrice &amp;hellip;&lt;/p&gt;
&lt;p&gt;Si c&amp;rsquo;est facebook qui vous tente, il faut visiter
, chosir un des jolis problèmes qui s&amp;rsquo;y trouvent, le résoudre avec un programme en C++, Java, JavaScript, OCaml/SML, Perl, PHP ou Python, ce qui montre bien que les langages de programmation n&amp;rsquo;ont que peu d&amp;rsquo;importance pour ceux qui savent ce qu&amp;rsquo;est un algorithme, et que toutes ces jolis sites web ne sont que du vernis.  Ensuite, il faut envoyer la réponse à { (0xFACEB00C &amp;raquo; 2) en décimal } @ facebook.com.
.&lt;/p&gt;</description></item><item><title>Jeux math'</title><link>https://drgoulu.com/2008/04/08/jeux-math/</link><pubDate>Tue, 08 Apr 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/04/08/jeux-math/</guid><description>&lt;figure class="alignright" style="max-width: 220px; width: 100%;"&gt;&lt;a href="http://www.pourlascience.fr/ewb_pages/e/espace-numerique-detail.php?art_id=18701&amp;amp;num=59" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2008/images/dossier_59_couv1_hu_f0ce18a87509c74f.webp" srcset="https://drgoulu.com/posts/2008/images/dossier_59_couv1_hu_f0ce18a87509c74f.webp 145w" sizes="(max-width: 640px) 100vw, 220px" alt="(cliquer pour le sommaire)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;(cliquer pour le sommaire)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;le
de ce mois regorge d&amp;rsquo;articles passionnants, dont plusieurs sur des sujets abordés précédemment sur Dr. Goulu.&lt;/p&gt;
&lt;p&gt;Alexandre Dewdney réédite un ancien article qui présente des &amp;ldquo;calculateurs analogiques&amp;rdquo; théoriquement capables de surclasser les plus puissants ordinateurs sur des problèmes spécifiques. Par exemple, les meilleurs algorithmes sont capables de trier N données en un temps proportionnel à N.log(N), log(N) étant le logarithme base 2 de N. Ainsi, pour trier 1000 nombres, il faut faire environ 10'000 comparaisons, alors qu&amp;rsquo;en utilisant 1000 spaghettis comme indiqué
 2x1000+1 opérations suffisent, soit un temps proportionnel à N.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;article présente d&amp;rsquo;autres &amp;ldquo;machines&amp;rdquo; toutes simples permettant de résoudre simplement des problèmes connus pour être difficiles à résoudre par informatique, comme trouver le chemin le plus court entre deux noeuds d&amp;rsquo;un graphe avec des ficelles, ou utiliser des films de savon pour déterminer le réseau de routes le plus court reliant N points.&lt;/p&gt;
&lt;p&gt;Dans un autre article, Michel Criton parle des problèmes de pesées et ça m&amp;rsquo;a fait très plaisir d&amp;rsquo;apprendre que
pour résoudre ce type de casse-têtes est la bonne, même si elle n&amp;rsquo;est pas vraiment nouvelle.&lt;/p&gt;
&lt;p&gt;Il y a encore d&amp;rsquo;autres articles sur des sujets comme la cryptographie, les carrés magiques, les nombres taxicabs (1729 est mon nombre préféré), la stratégie dans les jeux, les labyrinthes, la découpe de formes, l&amp;rsquo;origami et une douzaines d&amp;rsquo;autres choses dont je vous parlerai ici dès que j&amp;rsquo;ai le temps.&lt;/p&gt;
&lt;p&gt;Mais vous pouvez aussi acheter le journal, c&amp;rsquo;est du tout bon.&lt;/p&gt;</description></item><item><title>Shift</title><link>https://drgoulu.com/2008/02/23/shift/</link><pubDate>Sat, 23 Feb 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/02/23/shift/</guid><description>&lt;p&gt;
j&amp;rsquo;ai passé un excellent moment à jouer sur le web à un petit jeu très chouette :
 &lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt; C&amp;rsquo;est un jeu de plate-forme d&amp;rsquo;apparence très classique : on se déplace avec les flèches, on peut sauter avec space, et il faut atteindre les clés pour pouvoir accéder à la porte de sortie sans tomber sur les piques.&lt;/p&gt;
&lt;p&gt;Le truc qui fait toute la différence, c&amp;rsquo;est la touche shift. Je n&amp;rsquo;en dis pas plus : jouez-y et vous verrez qu&amp;rsquo;on peut encore avoir des idées géniales en matière de jeux video.&lt;/p&gt;</description></item><item><title>Blokus</title><link>https://drgoulu.com/2008/02/04/blokus/</link><pubDate>Mon, 04 Feb 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/02/04/blokus/</guid><description>&lt;p&gt;
est un jeu de stratégie qui existe &amp;ldquo;en dur&amp;rdquo;, et maintenant
: vous pouvez y jouer gratuitement sur le web, en affrontant des joueurs du monde entier. Il en existe différentes versions, mais le principe est de placer tout à tour des pièces genre Tetris ou Pentominos pour occuper la plus grande surface possible du plan de jeu. Les pièces d&amp;rsquo;un même joueur, de la même couleur, ne peuvent se toucher que par les angles, ce qui permet à un adversaire futé de traverser un barrage. Une partie à 4 ressemble à ceci:&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 760px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/ogWlsa4FoK4"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;La difficulté est à la fin de la partie : il faut vraiment tenir compte des pièces à disposition de l&amp;rsquo;adversaire pour l&amp;rsquo;empêcher de jouer plutôt que de tenter de placer de grosses pièces soi-même, ce qui résulte souvent en un auto-bloquage.&lt;/p&gt;
&lt;p&gt;Excellent jeu !&lt;/p&gt;</description></item><item><title>Eternity II</title><link>https://drgoulu.com/2008/01/12/eternity-ii/</link><pubDate>Sat, 12 Jan 2008 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2008/01/12/eternity-ii/</guid><description>&lt;p&gt;
est un puzzle spécialement étudié pour être extrêmement difficile, au point que son éditeur offre
au premier qui parviendra à placer correctement ses 256 pièces carrées de façon à ce que les côtés de chacune correspondent à ceux de ses 4 voisins, comme sur ce petit exemple avec 16 pièces seulement :&lt;/p&gt;
&lt;figure class="aligncenter" style="max-width: 340px; width: 100%;"&gt;&lt;a href="http://fr.eternityii.com/essayer-eternityii-en-ligne/" target="_blank" rel="noopener"&gt;&lt;img src="https://drgoulu.com/posts/2008/images/40119c41af0f937056e84674a4fc6f53_hu_2299297e94f7c2b.webp" srcset="https://drgoulu.com/posts/2008/images/40119c41af0f937056e84674a4fc6f53_hu_2299297e94f7c2b.webp 320w, https://drgoulu.com/posts/2008/images/40119c41af0f937056e84674a4fc6f53_hu_237f4a255e59f8aa.webp 340w" sizes="(max-width: 640px) 100vw, 340px" alt="(cliquer sur l&amp;#39;image pour jouer à la version 4x4 en ligne)" loading="lazy" class="rounded-lg shadow-sm w-full h-auto" data-zoomable /&gt;&lt;/a&gt;&lt;figcaption&gt;(cliquer sur l&amp;rsquo;image pour jouer à la version 4x4 en ligne)&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;D&amp;rsquo;après l&amp;rsquo;éditeur, il existe 20'000 solutions au puzzle, et il nous &amp;ldquo;aide&amp;rdquo; en nous indiquant la position d&amp;rsquo;une pièce (la 139) , et fournit 2 indices de plus si l&amp;rsquo;on résout un puzzle 6x6 et un 12x6 avec des pièces indiquées dans la boite. Il n&amp;rsquo;est pas clair si ces indices (&amp;ldquo;hints&amp;rdquo; en anglais) facilitent réellement la résolution du puzzle, où s&amp;rsquo;ils servent à limiter le nombre de solutions admises comme victorieuses à beaucoup moins de 20'000, tout en rendant la programmation d&amp;rsquo;une solution informatique plus compliquée.&lt;/p&gt;
&lt;p&gt;Mais avant d&amp;rsquo;attaquer la résolution informatique d&amp;rsquo;Eternity II, petit flash-back sur Eternity(I)&lt;/p&gt;
&lt;h3 id="eternity"&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/ed6fddbfbcbce428d652a4cef948bccb_hu_8384400655c7656d.webp 315w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/ed6fddbfbcbce428d652a4cef948bccb_hu_8384400655c7656d.webp"
width="315"
height="245"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Eternity&lt;/h3&gt;
&lt;p&gt;En 19xx, un challenge similaire avait été posé pour le puzzle &amp;ldquo;Eternity&amp;rdquo; premier du nom, dans lequel il fallait disposer 209 pièces dans un dodécagone. 2 solutions ont été trouvée,
en mai 2000 par
et Oliver Riordon &amp;quot; et quelques ordinateurs&amp;quot;, ce qui leur valut de se partager £1'000'000. Un mois plus tard, Guenter Stertenbrink a trouvé la seconde solution présentée ci-dessous:&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt=""
src="https://drgoulu.com/posts/2008/images/eff38e748db01e0583b2cd1efb33dc47.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt=""
src="https://drgoulu.com/posts/2008/images/3635c1d0ef4cd8999f3899bf61edfa87.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;A l&amp;rsquo;époque, Pierre-François avait programmé un logiciel de résolution du puzzle et l&amp;rsquo;avait rendu disponible sur le web à la condition de partager le prix avec lui si le programme permettait de trouver une solution. C&amp;rsquo;était une excellente idée, malheureusement il a du retirer son logiciel car il contenait la description des pièces du jeu, protégées par le copyright de l&amp;rsquo;éditeur &amp;hellip;&lt;/p&gt;
&lt;h3 id="résolution-informatique-deternity-ii"&gt;Résolution informatique d&amp;rsquo;Eternity II&lt;/h3&gt;
&lt;p&gt;J&amp;rsquo;ai recensé plusieurs logiciels de résolution d&amp;rsquo;Eternity II, qui évitent tous ces problèmes de copyright en obligeant l&amp;rsquo;utilisateur à décrire lui-même les 256 pièces du jeu qu&amp;rsquo;il est censé avoir acheté au magasin :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
était le plus ambitieux : basé sur
, il permettait d&amp;rsquo;utiliser la puissance combinée de milliers d&amp;rsquo;ordinateurs. Le projet a été
, officiellement par désespoir de trouver une solution avec un algorithme &amp;ldquo;brute force&amp;rdquo; et en raison des couts du serveur. Le code source de ce programme a été rendu disponible &amp;hellip; sur leur serveur qui ne répond plus !&lt;/li&gt;
&lt;li&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2008/images/7403004cbd4b0278fad6154d0aea7d67_hu_a9997992ea0dd05d.webp 90w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2008/images/7403004cbd4b0278fad6154d0aea7d67_hu_a9997992ea0dd05d.webp"
width="90"
height="90"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
est aussi un solveur distribué, et le site (en français) est plein d&amp;rsquo;informations utiles, avec également un forum très actif. Le logiciel que vous téléchargez après inscription sur le site se synchronise avec le serveur pour calculer des configurations qui n&amp;rsquo;ont pas encore été évaluées. Si une solution est trouvée, l&amp;rsquo;auteur du logiciel s&amp;rsquo;engage à vous verser la moitié des $2M&amp;hellip;&lt;/li&gt;
&lt;li&gt;
est basé sur le &amp;ldquo;
&amp;rdquo;, un client peer-to-peer
qui non seulement partage les fichiers, mais aussi le processeur&amp;hellip; Le
en Delphi de ce projet est disponible, ce qui est intéressant pour voir comment il est fait &amp;hellip;&lt;/li&gt;
&lt;li&gt;
est un shareware à $10 qui vous propose de garder les $2M pour vous tout seul, mais n&amp;rsquo;utilise qu&amp;rsquo;un seul processeur pour faire tourner un algorithme présenté comme mystérieusement exclusif, mais dont les résultats montrent qu&amp;rsquo;il est très &amp;ldquo;brute force&amp;rdquo; (voir ci-dessous)&lt;/li&gt;
&lt;li&gt;Il y a un code source en C++
&lt;/li&gt;
&lt;li&gt;et un en Java
. &lt;em&gt;(lien restauré le 19.3.2015)&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="algorithmes-utilisés"&gt;Algorithmes utilisés&lt;/h4&gt;
&lt;p&gt;Tous ces programmes utilisent faute de mieux un approche &amp;ldquo;brute force&amp;rdquo; : on place des pièces correspondantes les unes à côté des autres jusqu&amp;rsquo;à ce qu&amp;rsquo;on ne puisse plus le faire, puis on fait du &amp;ldquo;backtracking&amp;rdquo; en enlevant la dernière pièce et en essayant d&amp;rsquo;en mettre une autre qui permette de continuer, et si on n&amp;rsquo;y arrive pas on enlève encore la pièce précédente etc. La
de cet algorithme est monstrueuse : la probabilité de trouver une solution de cette manière en une année est très faible.&lt;/p&gt;
&lt;p&gt;
annnonce une performance de son algorithme de 15'000'000 de pièces disposées / seconde ! Une option permet de visualiser son fonctionnement dans une fenêtre graphique bougeant à toute vitesse. Une capture donne ceci :&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;On voit que, comme souvent dans ce genre de casse-tête, tout va bien presque jusqu&amp;rsquo;à la fin : ce sont les dernières pièces qui font la différence, et si on n&amp;rsquo;y arrive pas, c&amp;rsquo;est peut être les premières qui sont mal placées &amp;hellip;&lt;/p&gt;
&lt;p&gt;Un petit doute me tarabuste à propos d&amp;rsquo;Eternity2.fr : les anomalies cerclées de rouge : avec un vrai programme de backtracking, il ne devrait pas y avoir de pièce mal placée dans le puzzle. Peut-être est-ce un problème graphique, l&amp;rsquo;affichage étant partiellement désynchronisé &amp;hellip;&lt;/p&gt;
&lt;p&gt;Tetravex II a aussi une interface graphique et aborde le problème de manière identique, ligne par ligne. Je me demande si c&amp;rsquo;est judicieux car les pièces formant les bords sont connues, donc autant tenter de les placer le plus tôt possible, non ?&lt;/p&gt;
&lt;p&gt;Je vais encore y réfléchir et peut-être me lancer dans un solveur moins &amp;ldquo;brute force&amp;rdquo;&amp;hellip;&lt;/p&gt;
&lt;h4 id="références"&gt;Références:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
sur Vox-Populi&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Lecteur de pensée</title><link>https://drgoulu.com/2007/12/12/lecteur-de-pensee/</link><pubDate>Wed, 12 Dec 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/12/12/lecteur-de-pensee/</guid><description>&lt;p&gt;
, je vais expliquer à Yves comment marche le truc du
. C&amp;rsquo;est pas pour retourner le couteau dans la plaie, mais un minimum de maths, ça aide, dans la vie. Il m&amp;rsquo;a fallu 10 secondes pour deviner à l&amp;rsquo;avance que le symbole qui allait apparaître en cliquant sur le carré serait le Ø quelque soit le nombre que j&amp;rsquo;avais choisi.&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;La raison c&amp;rsquo;est que 10.x + y -x - y = 9x&lt;/p&gt;
&lt;p&gt;Autrement dit, quand vous choisissez un nombre entre 01 et 99 et que vous appelez x les dizaines et y les unités, votre nombre est &amp;ldquo;xy&amp;rdquo; est égal à 10.x + y. En enlevant les dizaines et les unités, les unités ne jouent plus aucun rôle et le nombre que vous obtenez est un multiple de 9 inférieur à 90. Et en examinant la table on voit que tous les multiples de 9 inférieurs à 90 correspondent au même symbole, le &amp;ldquo;Ø&amp;rdquo; quand j&amp;rsquo;ai essayé.&lt;/p&gt;</description></item><item><title>Danseuse et Cerveau</title><link>https://drgoulu.com/2007/12/10/danseuse-et-cerveau/</link><pubDate>Mon, 10 Dec 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/12/10/danseuse-et-cerveau/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt=""
src="https://drgoulu.com/posts/2007/images/603620-spinning-lady.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
J&amp;rsquo;aime bien cette petite danseuse qui me rappelle le
 à Las Vegas&amp;hellip;  Mais dans quel sens tourne-t-elle ?&lt;/p&gt;
&lt;p&gt;D&amp;rsquo;après cet
, ça dépend de votre hémisphère cérébral préférentiel, droit ou gauche. Si vous arrivez à la voir tourner dans les deux sens, bonne nouvelle : votre cerveau a deux hémisphères &amp;hellip;&lt;/p&gt;
&lt;p&gt;Je n’arrive pas à la faire changer de sens en regardant, mais en la quittant des yeux, en pensant à une direction et en la re-regardant, elle m’obéit presque toujours. Mais le plus souvent elle tourne « anti-clockwise », un terme très négatif, je préfère « trigonométrique positif »…&lt;/p&gt;</description></item><item><title>l&amp;#039;Enigme des Trois Interrupteurs</title><link>https://drgoulu.com/2007/11/17/lenigme-des-trois-interrupteurs/</link><pubDate>Sat, 17 Nov 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/11/17/lenigme-des-trois-interrupteurs/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2007/images/ampoule_hu_c7f7474081395c7a.webp 320w, https://drgoulu.com/posts/2007/images/ampoule_hu_9c253ea1bdc7a74d.webp 480w, https://drgoulu.com/posts/2007/images/ampoule_hu_ff1676b46d37e9ca.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2007/images/ampoule_hu_c7f7474081395c7a.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Julia m&amp;rsquo;a collé avec un petit problème de logique. Il est
que j&amp;rsquo;ai hésité à lui consacrer un article, mais après avoir donné ma &amp;ldquo;langue au chat&amp;rdquo;, j&amp;rsquo;ai eu tellement honte que je dois expliquer pourquoi. Vous allez comprendre.&lt;/p&gt;
&lt;p&gt;Le problème : dans une pièce se trouvent 3 interrupteurs, dont un seul allume ou éteint une ampoule placée dans une autre pièce. On n&amp;rsquo;a le droit d&amp;rsquo;aller dans cette autre pièce qu&amp;rsquo;une seule foi, et pas moyen de voir autrement si l&amp;rsquo;ampoule est allumée ou éteinte. La question : comment savoir quel interrupteur commande la lampe ?&lt;/p&gt;
&lt;p&gt;Le problème dans ces articles sur les casse-tête, c&amp;rsquo;est de savoir s&amp;rsquo;il faut donner la solution, ou pas, ou un indice avant, et comment forcer le lecteur à réfléchir plutôt que de se précipiter sur la solution en cliquant un lien &amp;hellip;&lt;/p&gt;
&lt;p&gt;Alors ici, je vous propose de lire
que je venais d&amp;rsquo;écrire et qui contient l&amp;rsquo;indice, d&amp;rsquo;où ma honte à ne pas y avoir pensé&amp;hellip; Et si vous ne trouvez toujours pas,
, qui présente le problème, un indice et la solution d&amp;rsquo;une manière intelligente.&lt;/p&gt;</description></item><item><title>Portal, le jeu hyperspécial</title><link>https://drgoulu.com/2007/11/11/portal-le-jeu-hyperspecial/</link><pubDate>Sun, 11 Nov 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/11/11/portal-le-jeu-hyperspecial/</guid><description>&lt;p&gt;Noël approche, et les jeux qui:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ne sont pas trop idiots&lt;/li&gt;
&lt;li&gt;ne demandent pas des PC flambant neufs avec cartes graphiques d&amp;rsquo;enfer&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ne seront pas légion. J&amp;rsquo;en ai déjà trouvé un : Portal&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/GWzmL05OlYA"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Portal est un jeu de plates-formes en 3D, ou plutôt un jeu de casse-tête en 4 dimensions basé sur une idée toute bête : à l&amp;rsquo;aide d&amp;rsquo;un engin futuriste, on peut percer des trous dans l&amp;rsquo;hyper-espace, en créant un portail entre deux lieux distincts du décor.&lt;/p&gt;
&lt;p&gt;Ca permet évidemment de passer certains obstacles directement, mais aussi de faire plein de choses amusantes permettant de passer chacun des 19 tableaux.&lt;/p&gt;
&lt;p&gt;Le moyen le plus simple, le plus rapide et le (presque) moins cher de vous le procurer est d&amp;rsquo;utiliser la plateforme 
.&lt;/p&gt;</description></item><item><title>L&amp;#8217;ainée est blonde</title><link>https://drgoulu.com/2007/06/20/lainee-est-blonde/</link><pubDate>Wed, 20 Jun 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/06/20/lainee-est-blonde/</guid><description>&lt;p&gt;Un superbe problème mathématico logique que j&amp;rsquo;ai bien envie d&amp;rsquo;élever au rang de &amp;ldquo;mon préféré&amp;rdquo; à la place du &amp;ldquo;
&amp;rdquo; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un facteur fait la causette à un prof de maths : &lt;em&gt;&amp;ldquo;Au fait, quels âges ont vos filles ?&amp;rdquo;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;&lt;em&gt;Le produit de leurs âges fait 36, et leur somme est le numéro de la maison d&amp;rsquo;en face.&lt;/em&gt;&amp;rdquo; répond le papa taquin.&lt;/li&gt;
&lt;li&gt;Le facteur réfléchit, puis dit &amp;ldquo;&lt;em&gt;vous n&amp;rsquo;oubliez pas quelque chose ?&lt;/em&gt;&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Ah si,&lt;/em&gt; dit le prof_, vous avez raison j&amp;rsquo;ai oublié de préciser que l&amp;rsquo;ainée est blonde._&lt;/li&gt;
&lt;li&gt;&lt;em&gt;C&amp;rsquo;est bon&lt;/em&gt;, dit le facteur, &lt;em&gt;je sais leurs âges alors!&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quels âges ont les 3 filles ?&lt;/p&gt;
&lt;p&gt;Je précise que ce n&amp;rsquo;est pas un gag : le fait de savoir que l&amp;rsquo;ainée est blonde est effectivement utile à la résolution du problème !&lt;/p&gt;
&lt;p&gt;Vous pouvez trouver la solution bêtement en la cherchant sur internet, il y a des dizaines de sites qui parlent de ce problème.&lt;/p&gt;
&lt;p&gt;Ou vous pouvez attaquer tranquillement la résolution du problème étape par étape. Ce n&amp;rsquo;est pas difficile, il suffit d&amp;rsquo;être systématique:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;chercher les combinaisons de 3 âges possibles dont le produit fasse 36&lt;/li&gt;
&lt;li&gt;écrire les sommes correspondantes&lt;/li&gt;
&lt;li&gt;vous demander pourquoi le facteur pense qu&amp;rsquo;il manque une indication&lt;/li&gt;
&lt;li&gt;réfléchir en quoi &amp;ldquo;l&amp;rsquo;ainée est blonde&amp;rdquo; lève son doute.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A vos cerveaux!&lt;/p&gt;</description></item><item><title>Colonnes ou Lignes ?</title><link>https://drgoulu.com/2007/06/15/colonnes-ou-lignes/</link><pubDate>Fri, 15 Jun 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/06/15/colonnes-ou-lignes/</guid><description>&lt;p&gt;En perdant un peu de temps sur un
, je me suis rendu compte de quelque chose de bizarre. Avant de vous dire quoi, faites rapidement le Sudoku le plus facile du Net : cherchez dans le tableau ci-joint les 9 chiffres manquant de manière à ce que chaque chiffre de 1 à 9 n&amp;rsquo;apparaisse qu&amp;rsquo;une fois dans chaque ligne et dans chaque colonne.&lt;/p&gt;
&lt;p&gt;Attention :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;disposez bien votre fenêtre pour voir le Sudoku en entier.&lt;/li&gt;
&lt;li&gt;pour les Belges, pensez à utiliser un feutre effaçable si vous écrivez sur votre écran &amp;hellip;&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;### 5&lt;/th&gt;
&lt;th&gt;### 4&lt;/th&gt;
&lt;th&gt;### 9&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;### 7&lt;/th&gt;
&lt;th&gt;### 3&lt;/th&gt;
&lt;th&gt;### 8&lt;/th&gt;
&lt;th&gt;### 6&lt;/th&gt;
&lt;th&gt;### 2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;### 8&lt;/td&gt;
&lt;td&gt;### 3&lt;/td&gt;
&lt;td&gt;### 1&lt;/td&gt;
&lt;td&gt;### 5&lt;/td&gt;
&lt;td&gt;### 6&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;### 7&lt;/td&gt;
&lt;td&gt;### 4&lt;/td&gt;
&lt;td&gt;### 9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;### 6&lt;/td&gt;
&lt;td&gt;### 2&lt;/td&gt;
&lt;td&gt;### 7&lt;/td&gt;
&lt;td&gt;### 8&lt;/td&gt;
&lt;td&gt;### 4&lt;/td&gt;
&lt;td&gt;### 9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;### 1&lt;/td&gt;
&lt;td&gt;### 5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;### 7&lt;/td&gt;
&lt;td&gt;### 1&lt;/td&gt;
&lt;td&gt;### 8&lt;/td&gt;
&lt;td&gt;### 2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;### 4&lt;/td&gt;
&lt;td&gt;### 9&lt;/td&gt;
&lt;td&gt;### 3&lt;/td&gt;
&lt;td&gt;### 6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;### 3&lt;/td&gt;
&lt;td&gt;### 5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;### 6&lt;/td&gt;
&lt;td&gt;### 9&lt;/td&gt;
&lt;td&gt;### 7&lt;/td&gt;
&lt;td&gt;### 2&lt;/td&gt;
&lt;td&gt;### 8&lt;/td&gt;
&lt;td&gt;### 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;### 9&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;### 2&lt;/td&gt;
&lt;td&gt;### 3&lt;/td&gt;
&lt;td&gt;### 1&lt;/td&gt;
&lt;td&gt;### 8&lt;/td&gt;
&lt;td&gt;### 5&lt;/td&gt;
&lt;td&gt;### 7&lt;/td&gt;
&lt;td&gt;### 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;### 8&lt;/td&gt;
&lt;td&gt;### 6&lt;/td&gt;
&lt;td&gt;### 9&lt;/td&gt;
&lt;td&gt;### 3&lt;/td&gt;
&lt;td&gt;### 5&lt;/td&gt;
&lt;td&gt;### 4&lt;/td&gt;
&lt;td&gt;### 2&lt;/td&gt;
&lt;td&gt;### 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;### 2&lt;/td&gt;
&lt;td&gt;### 7&lt;/td&gt;
&lt;td&gt;### 5&lt;/td&gt;
&lt;td&gt;### 4&lt;/td&gt;
&lt;td&gt;### 8&lt;/td&gt;
&lt;td&gt;### 6&lt;/td&gt;
&lt;td&gt;### 1&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;### 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;### 4&lt;/td&gt;
&lt;td&gt;### 9&lt;/td&gt;
&lt;td&gt;### 3&lt;/td&gt;
&lt;td&gt;### 7&lt;/td&gt;
&lt;td&gt;### 2&lt;/td&gt;
&lt;td&gt;### 1&lt;/td&gt;
&lt;td&gt;### 6&lt;/td&gt;
&lt;td&gt;### 5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Et maintenant, une question :&lt;/p&gt;
&lt;p&gt;Avez-vous cherché les chiffres manquants plutôt par lignes ou plutôt par colonnes ?&lt;/p&gt;
&lt;p&gt;Je me suis surpris à avoir une préférence pour les colonnes : je vois plus rapidement les chiffres manquant en parcourant la table de haut en bas/bas en haut qu&amp;rsquo;en lisant normalement les lignes. Et vous ? suis-je anormal ?&lt;/p&gt;</description></item><item><title>Professor Fizzwizzle</title><link>https://drgoulu.com/2007/06/05/professor-fizzwizzle/</link><pubDate>Tue, 05 Jun 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/06/05/professor-fizzwizzle/</guid><description>&lt;p&gt;
de
est encore un de ces petits jeux touts bêtes où l&amp;rsquo;on passe de longues minutes à se gratter l&amp;rsquo;occiput et à se fourvoyer lamentablement avant d&amp;rsquo;avoir, enfin, l&amp;rsquo;éclair de génie permettant de &amp;ldquo;passer le tableau&amp;rdquo;, et de recommencer&amp;hellip;&lt;/p&gt;
&lt;p&gt;La
est assez longue pour se faire une idée assez précise de la difficulté progressivement diabolique des tableaux, qui se suivent sans aucune pitié pour vos neurones surchauffés, ensuite ça coûte $20 pour achever de les griller.&lt;/p&gt;</description></item><item><title>Multiplication graphique</title><link>https://drgoulu.com/2007/04/18/multiplication-graphique/</link><pubDate>Wed, 18 Apr 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/04/18/multiplication-graphique/</guid><description>&lt;p&gt;J&amp;rsquo;avais déjà vu cette vidéo qui montre une drôle de manière de multiplier deux nombres, mais Yves m&amp;rsquo;a demandé si &amp;ldquo;c&amp;rsquo;est un gag, ou il y a une once de vérité dans la méthode ?&amp;rdquo;, alors je l&amp;rsquo;ai regardée encore une fois :&lt;/p&gt;
&lt;div class="my-6 mx-auto" style="max-width: 640px; width: 100%;"&gt;
&lt;div class="w-full relative rounded-lg overflow-hidden shadow-md bg-black" style="padding-bottom: 56.25%; height: 0;"&gt;
&lt;iframe
src="https://www.youtube-nocookie.com/embed/HK_Y0VhjWlY"
title="YouTube video player"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
loading="lazy"&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;En fait c&amp;rsquo;est tout bêtement une multiplication en colonne déguisée :&lt;/p&gt;
&lt;p&gt;Dans le premier exemple 21 x 13, les intersections de gauche représentent le produit des dizaines (2x1), celles de droite le produit des unités (1x3) et celles du milieu les 2 produits dizaines x unités (1x3 + 1x1 ). On retrouve directement le principe de la multiplication à la main, d&amp;rsquo;autant qu&amp;rsquo;il n&amp;rsquo;y a pas de retenues:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;x 1 3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ 6 3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;--------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2 7 3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;De même dans le second exemple 123 x 321 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1 2 3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; x 3 2 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ----------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3 6 9
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ 2 4 6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;+ 1 2 3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-------------
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3 8 14 8 3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;qui sont les nombres d&amp;rsquo;intersections de chaque colonne du graphique. Reste à gérer les retenues, facile dans ce cas où il n&amp;rsquo;y a qu&amp;rsquo;un 1 à reporter à un endroit.&lt;/p&gt;
&lt;p&gt;Au début j&amp;rsquo;ai pensé que la méthode est limitée aux petits chiffres comme 1,2,3 dont les produits sont inférieur à 10, mais il n&amp;rsquo;y a aucune raison : on peut très bien multiplier 978 par 689 ainsi. La connaissance du livret évite même de compter les points un à un&amp;hellip; Il faut juste être prudent avec les 0, en les traçant quand même pour éviter les bulles, par exemple comme un trait pointillé dont toutes les intersections sont omises &amp;hellip;&lt;/p&gt;</description></item><item><title>Comment faire 4 triangles équilatéraux avec 6 allumettes ?</title><link>https://drgoulu.com/2007/01/26/comment-faire-4-triangles-equilateraux-avec-6-allumettes/</link><pubDate>Fri, 26 Jan 2007 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2007/01/26/comment-faire-4-triangles-equilateraux-avec-6-allumettes/</guid><description>&lt;p&gt;&amp;ldquo;Il faut penser différemment&amp;rdquo; écrit
dans &amp;ldquo;Les Fourmis&amp;rdquo; quand il propose ce petit casse-tête.&lt;/p&gt;
&lt;p&gt;Quand vous serez convaincu qu&amp;rsquo;il faut casser les allumettes (interdit!) , reprenez le problème à zéro en chronométrant combien de temps il vous faut pour &amp;ldquo;penser différemment&amp;rdquo; .&lt;/p&gt;
&lt;p&gt;Le plaisir de l&amp;rsquo;éclair &amp;ldquo;haha&amp;rdquo; combiné à une certaine honte m&amp;rsquo;avaient frappé après environ 2 minutes. Et vous ?&lt;/p&gt;
&lt;p&gt;Vous pouvez aussi lire directement la suite dans laquelle figure la solution, mais ça serait dommage&amp;hellip;&lt;/p&gt;
\[expand title="cliquer la langue au chat..."\]&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img alt=""
src="https://drgoulu.com/posts/2007/images/c5c54de6cf937d04c034f0436104354f.gif"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
Très peu de gens pensent immédiatement en 3D et trouvent la solution  : le tétraèdre. La majorité abordent le problème &amp;ldquo;à plat&amp;rdquo;, et ne parviennent pas à élargir leur approche et à penser dans l&amp;rsquo;espace.&lt;/p&gt;
&lt;p&gt;Même certains, expérience faite, dont le boulot consiste à convaincre les ingénieurs de quitter leurs outils de dessin 2D pour passer aux outils de Conception Assistée par Ordinateur (CAO) en 3D &amp;hellip;&lt;/p&gt;
\[/expand\]</description></item><item><title>Oulipo</title><link>https://drgoulu.com/2005/10/30/oulipo/</link><pubDate>Sun, 30 Oct 2005 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2005/10/30/oulipo/</guid><description>&lt;p&gt;l&amp;rsquo;
est un groupe d&amp;rsquo;auteurs (Raymond Quenenau et Georges Perec sont les plus connus) explorant l&amp;rsquo; &amp;ldquo;écriture sous contrainte&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Les contraintes les plus connues sont:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le lipogramme, dans lequel on s&amp;rsquo;interdit d&amp;rsquo;utiliser certaines lettres. Le plus spectaculaires est le roman &amp;ldquo;La Disparition&amp;rdquo;, de Georges Perec dans lequel n&amp;rsquo;apparaît pas une seule fois la lettre E, la plus fréquente de la langue française !&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;antistrophe, appellée couramment &amp;ldquo;contrepèterie&amp;rdquo;. Il existe un
 !&lt;/li&gt;
&lt;li&gt;Le pangramme consiste à utiliser toutes les lettres de l&amp;rsquo;alphabet dans un texte aussi court que possible, par exemple:
&lt;ul&gt;
&lt;li&gt;Portez ce vieux whisky au juge blond qui fume&lt;/li&gt;
&lt;li&gt;Peux-tu m&amp;rsquo;envoyer du whisky que j&amp;rsquo;ai bu chez le forgeron ?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Les aides mémoire, permettant de se rappeller certains nombres ou séries:
&lt;ul&gt;
&lt;li&gt;Pi:Que (3) j&amp;rsquo;(1) aime (4) à (1) faire 5) apprendre (9) un (2) nombre (6) utile(5) aux (3) sages (5)&lt;/li&gt;
&lt;li&gt;e : Tu(2) aideras(7) à(1) rappeler(8) ta (2) quantité(8) à (1) beaucoup (8) de (2) docteurs (8) amis(4)&lt;/li&gt;
&lt;li&gt;Les planètes : Monsieur vous tirez mal - je suis un novice pitoyable&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Palindromes : textes pouvant être lus à l&amp;rsquo;endroit et à l&amp;rsquo;envers.
&lt;ul&gt;
&lt;li&gt;radar, ressasser etc.&lt;/li&gt;
&lt;li&gt;marchand de savon en finlandais : siappuakivikauppais&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Anagrammes (voir
)
&lt;ul&gt;
&lt;li&gt;Rose au coeur violet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se vouer à toi, ô cruel!&lt;br&gt;
A toi, couleuvre rose&lt;br&gt;
O vouloir être la cause&lt;br&gt;
Couvre-toi, la rue ose&lt;br&gt;
Ouvre-toi, ô la sucrée!&lt;br&gt;
Va ou surréel côtoie&lt;br&gt;
O l&amp;rsquo;oiseau crève-tour&lt;br&gt;
Vil os écoeura route&lt;br&gt;
Coeur violé ose tuer&amp;hellip;&lt;/p&gt;
&lt;h4 id="mots-croisés"&gt;Mots croisés&lt;/h4&gt;
&lt;p&gt;Créer des mots croisés sans case noire est également une discipline Oulipienne. Voir la
, où se trouve également la solution au mot croisé d&amp;rsquo;une seule case avec pour définition:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;horizontalement : voyelle&lt;/li&gt;
&lt;li&gt;verticalement : consonne&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les records à battre sont
&lt;/p&gt;</description></item><item><title>Sudoku</title><link>https://drgoulu.com/2005/10/26/sudoku/</link><pubDate>Wed, 26 Oct 2005 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2005/10/26/sudoku/</guid><description>&lt;p&gt;Ce jeu &amp;ldquo;à la mode&amp;rdquo; n’est en fait pas très difficile si on suit une méthode systématique.&lt;/p&gt;
&lt;p&gt;Les 2 &amp;ldquo;solveurs en ligne&amp;rdquo; suivants montrent la méthode en résolvant un Sudoku pas à pas :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;celui-ci permet d&amp;rsquo;imprimer un sudoku pour le résoudre à la main
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il est à mon avis plus difficile de créer un Sudoku, en étant sur qu’il n’admette qu’une seule solution d’une part, et ayant une difficulté donnée d’autre part.&lt;/p&gt;
&lt;p&gt;Les générateurs de Sudoku que j’ai trouvé sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>DicoLib</title><link>https://drgoulu.com/2005/09/14/dicolib/</link><pubDate>Wed, 14 Sep 2005 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2005/09/14/dicolib/</guid><description>&lt;p&gt;DicoLib est une librairie C++/STL pour les jeux de mots, que j&amp;rsquo;ai développé initialement pour résoudre le casse-tête &amp;ldquo;
&amp;rdquo;&lt;/p&gt;
&lt;h4 id="complexité"&gt;Complexité&lt;/h4&gt;
&lt;p&gt;L’algorithme &amp;ldquo;force brute&amp;rdquo; pour résoudre &amp;ldquo;
&amp;rdquo; consiste à chercher les n mots de 8 lettres du dictionnaire (O(N)), puis pour chacun d’eux, enlever successivement chaque lettre et vérifier s’il est présent dans le dictionnaire (O(N.log N) pour liste triée), et recommencer s’il y est. La complexité est environ O(N+n.100.N.log N). Le facteur 100 est une estimation du nombre de recherches dans le dictionnaire pour chaque mot avant d’arriver à une impasse. Avec typiquement N=30’000 et n=5’000, on se retrouve avec &lt;em&gt;&amp;lsquo;240 milliards de comparaisons&lt;/em&gt;&amp;rsquo; de chaînes de caractères à effectuer si l’on veut trouver toutes les solutions. Compter une petite heure&amp;hellip;&lt;/p&gt;
&lt;p&gt;On pourrait se satisfaire de ceci et se demander pourquoi passer des heures à programmer une solution plus futée. Et bien, si on est capable de retrouver rapidement les mots qui ne se distinguent d’un autre que par une seule lettre, ou deux ou trois, on obtient un correcteur d’orthographe rapide et efficace. Mais pour une telle application, la complexité mentionnée ci-dessus serait inacceptable.&lt;/p&gt;
&lt;h4 id="conception"&gt;Conception&lt;/h4&gt;
&lt;p&gt;Comment accélérer très sérieusement la recherche de mots &amp;ldquo;semblables&amp;rdquo; a un autre dans un dictionnaire ?&lt;/p&gt;
&lt;p&gt;Quelques idées :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;grouper les mots par tailles. Si on cherche un mot de 6 lettres, on ne le cherchera que parmi ceux-là.&lt;/li&gt;
&lt;li&gt;construire une &amp;ldquo;signature&amp;rdquo; du mot sous la forme d’un ensemble de 26 bits indiquant quelles lettres sont présentes dans le mot, et grouper les mots ayant la même signature (donc composés des mêmes lettres) dans une liste. 26 bits, c’est moins que 32, donc très pratique à manipuler par le processeur pour des opérations logiques. Mais c’est trop pour être utilisé comme clé dans une table de hachage, qui aurait dans les 64 millions d’entrées.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je me suis dont mis à réfléchir à une structure de donnée permettant de stocker un dictionnaire de mots sous une forme permettant la recherche rapide de mots similaires (avec une lettre en plus ou en moins), des anagrammes (mots obtenus par permutation des lettres) ou selon les lettres qui les composent (pour le scrabble).&lt;/p&gt;
&lt;p&gt;J’ai alors eu une idée simple, dont je ne sais pas encore si elle est originale, mais en tout cas elle est très efficace, et j’ai écrit un ensemble de classes C++ &amp;ldquo;Dico.lib&amp;rdquo;,une librairie permettant de réaliser en quelques lignes des programmes de résolution de divers jeux de lettres.&lt;/p&gt;
&lt;p&gt;L’idée principale de DicoLib est de stocker les mots dans une structure permettant d’y accéder rapidement sur la base de 2 informations simples :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la longueur du mot&lt;/li&gt;
&lt;li&gt;une clé de 26 bits (letterset) codant la présence de chaque lettre de l’alphabet dans le mot. par exemple le mot &amp;ldquo;alphabet&amp;rdquo; donne&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;11001001000100000001000000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;abcdefghijklmnopqrstuvwxyz
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="structure-de-données"&gt;Structure de données&lt;/h4&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;dico.lib définit la hiérarchie de classes suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;class Word // mots du dictionnaire&lt;/li&gt;
&lt;li&gt;class letterset : public std ::bitset&amp;lt;26&amp;gt; // clé d’accès&lt;/li&gt;
&lt;li&gt;class WordList : public std ::list // liste de mots&lt;/li&gt;
&lt;li&gt;class Anagrams : public WordList // liste d’anagrammes&lt;/li&gt;
&lt;li&gt;class AnagramsList : public list // liste de listes d’anagrammes&lt;/li&gt;
&lt;li&gt;class SameLetters : public vector // mots formés des même lettres, organiséss par longueurr&lt;/li&gt;
&lt;li&gt;class Dico : public std ::map // dictionnaire utilisant les letterset comme clé primaire&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="liens"&gt;Liens&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
, d&amp;rsquo;où vous pouvez télécharger le code et contribuer à le développer&lt;/li&gt;
&lt;li&gt;
, article sur
&lt;/li&gt;
&lt;li&gt;des dictionnaire en mode texte sont disponibles ici:
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Word Downsizing</title><link>https://drgoulu.com/2005/09/14/word-downsizing/</link><pubDate>Wed, 14 Sep 2005 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2005/09/14/word-downsizing/</guid><description>&lt;p&gt;J’avais vu sur
un casse-tête intéressant : trouver un mot (anglais) de 8 lettres tel qu’en enlevant une lettre on obtienne un mot de 7 lettres correct, auquel en enlevant une lettre on tombe sur un mot anglais de 6 lettres également correct et ainsi de suite jusqu’à 1 lettre&amp;hellip;&lt;/p&gt;
&lt;p&gt;Je me suis mis à écrire le programme
qui m’a permis de trouver de nombreuses solutions, parmi lesquelles :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;replanted, replated, related, elated, elate, late, ate, at, a&lt;/li&gt;
&lt;li&gt;restarted, restated, restate, estate, state, sate, ate, at, a&lt;/li&gt;
&lt;li&gt;streambed, streamed, steamed, teamed, tamed, tame, tam, am, a&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;mais je n’ai bêtement pas eu l’idée d’en chercher une de 9 lettres, ce qui fait que ce n’est pas moi qui ai trouvé la
:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;STARTLING, STARTING, STARING, STRING, STRING, SING, SIN, IN, I&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En français il n’y a 3 solutions si on admet les conjugaisons, les pluriels et les consonnes apostrophées (s,t,n) comme mots de une lettre valides, ce qui permet :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rabaisser, abaisser, baisser, baiser, baser, base, bas, as, s&lt;/li&gt;
&lt;li&gt;chasseurs, chasseur, chasser, casser, caser, case, cas, as, s&lt;/li&gt;
&lt;li&gt;moniteurs, monteurs, monteur, monter, monte, mont, ont, on, n&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Pentominos</title><link>https://drgoulu.com/2005/09/04/pentominos/</link><pubDate>Sun, 04 Sep 2005 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2005/09/04/pentominos/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;J’avais écrit un programme &amp;ldquo;PentoSolver&amp;rdquo; en Visual Basic qui trouve les solutions 6x10 mais
résout toutes les variantes de Pentominos et de Polynominos encore plus vite, directement sur votre explorateur&amp;hellip; TRES FORT !&lt;/p&gt;</description></item><item><title>Les 3 maisons</title><link>https://drgoulu.com/2005/08/21/les-3-maisons/</link><pubDate>Sun, 21 Aug 2005 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2005/08/21/les-3-maisons/</guid><description>&lt;p&gt;Comment amener l’eau, le gaz et l’électricité depuis les 3 usines correspondantes vers 3 maisons sans que les tuyaux et câbles correspondants ne se croisent sur un plan ?&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/2005/images/867ce3748efea645e2ab17c446524388_hu_96eaf1499dba7e4d.webp 320w, https://drgoulu.com/posts/2005/images/867ce3748efea645e2ab17c446524388_hu_ad9528d0323f13d6.webp 480w, https://drgoulu.com/posts/2005/images/867ce3748efea645e2ab17c446524388_hu_f796f9b419e74c21.webp 539w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2005/images/867ce3748efea645e2ab17c446524388_hu_96eaf1499dba7e4d.webp"
width="539"
height="332"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;C’est le genre de casse-tête qui m’énerve, surtout si on me dit qu’il existe une solution.&lt;/p&gt;
&lt;p&gt;En fait, il n’y a pas de solution à ce problème. Mon collègue
, et montre qu’un planète torique offrirait des avantages &amp;hellip;&lt;/p&gt;</description></item><item><title>le Triangle Mystérieux</title><link>https://drgoulu.com/2005/01/14/le-triangle-mysterieux/</link><pubDate>Fri, 14 Jan 2005 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2005/01/14/le-triangle-mysterieux/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Triangle Mystérieux"
srcset="https://drgoulu.com/posts/2005/images/bb7bdbf4c9c46359ee0bc2eac5e91202_hu_bed0098f97909738.webp 320w, https://drgoulu.com/posts/2005/images/bb7bdbf4c9c46359ee0bc2eac5e91202_hu_25dc9cd1b0751a9b.webp 480w, https://drgoulu.com/posts/2005/images/bb7bdbf4c9c46359ee0bc2eac5e91202_hu_86c5adca81acf673.webp 624w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/2005/images/bb7bdbf4c9c46359ee0bc2eac5e91202_hu_bed0098f97909738.webp"
width="624"
height="588"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Si on regarde bien, le triangle vert à une pente différente du rouge : Le vert monte de 2 carrés pour 5 horizontalement, le rouge de 3 pour 8, et 2/5 est bien différent de 3/8.&lt;/p&gt;
&lt;p&gt;Conc les deux figures ne sont pas des triangles parfaits : l’hypoténuse de celui sans trou est légèrement concave, celle de celui avec trou fait une bosse, et si on fait le calcul de la surface ainsi récupérée en grignotant l’hypoténuse, on risque bien de trouver la surface du trou.&lt;/p&gt;
&lt;p&gt;En effet :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;la surface du grand triangle a l’air (si il était parfait) d’être de 5x13/2 = 32.5 carrés&lt;/li&gt;
&lt;li&gt;la surface des pièces est 5 (triangle vert) + 12 (triangle rouge) + 8 (vert clair) + 7 (orange) = 32&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il reste à montrer que la surface du triangle tout fin qu’il faut une fois ajouter et une fois enlever à l’hypoténuse vaut 0.5 carrés&amp;hellip; A vos calculettes !&lt;/p&gt;
&lt;p&gt;Il y a pas mal de variantes de ce casse-tête, au chalet j’ai une boite que l’on peut remplir &amp;ldquo;parfaitement&amp;rdquo; avec des petits plots de 2 manières différentes, mais dans un cas il reste un petit plot qu’on ne peut pas placer à moins de le réduire en fine sciure&amp;hellip;&lt;/p&gt;</description></item><item><title>Temple de la Logique Pure</title><link>https://drgoulu.com/2004/06/21/temple-de-la-logique-pure/</link><pubDate>Mon, 21 Jun 2004 00:00:00 +0000</pubDate><guid>https://drgoulu.com/2004/06/21/temple-de-la-logique-pure/</guid><description>&lt;p&gt;Le casse-tête suivant est un de mes favoris car il semble clair qu’il est insoluble, qu’il doit manquer quelque chose&amp;hellip; et pourtant, il peut se résoudre avec un peu de logique&amp;hellip;pure !&lt;/p&gt;
&lt;p&gt;Dans un monastère retiré vivent les Adeptes de la Logique Pure. Leur vie est vouée à la réflexion et à l’étude de la Logique, et de la logique seule. Les Adeptes méprisent la communication, illogique, et donc ne se parlent ni ne s’écrivent, ni même n’échangent de l’information d’aucune manière. Leur vie sociale n’est rythmée que par le seul et unique repas qu’ils prennent quotidiennement en commun, dans un silence absolu.&lt;/p&gt;
&lt;p&gt;Un jour cependant apparaît au beau milieu du repas la Logique elle-même, divinité éthérée et courroucée : &amp;ldquo;Certains d’entre vous ont failli à leur vœu et ont commis des actes aussi Illogiques qu’Impurs. J’ai marqué les coupables d’une marque indélébile sur le front. Ceux qui se sauront marqués feront pénitence en sautant un repas.&amp;rdquo; Sur ce, elle disparaît rejoindre Aristote, Bool, Gödel et les autres.&lt;/p&gt;
&lt;p&gt;Evidemment, chaque Adepte est interloqué et dévisage les autres, comptant les marques de ses acolytes. Mais &amp;ldquo;comment savoir si l’on est soi-même marqué ?&amp;rdquo;, se demande chacun en se retirant dans sa sobre cellule, où tout miroir est évidemment proscrit. Ainsi s’achève ce qu’il est convenu d’appeler le jour zéro.&lt;/p&gt;
&lt;p&gt;Le lendemain, tous les adeptes viennent manger, aucun n’ayant pu se convaincre qu’il est lui-même marqué. De même le second jour, puis le troisième, le quatrième, le cinquième et le sixième jour, tous les adeptes sont là.&lt;/p&gt;
&lt;p&gt;Mais le septième jour soudain, tous les pécheurs manquent à l’appel. Combien y’en a-t-il ? Et comment ont-ils su qu’ils étaient marqués ?&lt;/p&gt;
&lt;p&gt;Si vous séchez (et je suis sur que vous allez sécher&amp;hellip;) un petit truc : supposez qu’il y un seul adepte marqué et demandez-vous ce qui se passera. Puis refaites le raisonnement avec 2 marqués etc.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;publié dans le journal interne de Charmilles Technologies en 1999&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Pesée des boules</title><link>https://drgoulu.com/1999/07/21/pesee-des-boules/</link><pubDate>Wed, 21 Jul 1999 00:00:00 +0000</pubDate><guid>https://drgoulu.com/1999/07/21/pesee-des-boules/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://drgoulu.com/posts/1999/images/ca235aedbb5c29ef2d595ec661779dcb_hu_bc2f20ca2d95940f.webp 320w, https://drgoulu.com/posts/1999/images/ca235aedbb5c29ef2d595ec661779dcb_hu_c01a7d9046d04680.webp 400w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://drgoulu.com/posts/1999/images/ca235aedbb5c29ef2d595ec661779dcb_hu_bc2f20ca2d95940f.webp"
width="400"
height="517"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
On a 12 billes de billard dont l’une est soit plus lourde soit plus légère que les 11 autres. Il s’agit de la trouver à l’aide d’une balance à fléau (qui compare le poids des boules placées sur ses deux plateaux) en 3 pesées maximum.&lt;/p&gt;
&lt;p&gt;Voici une méthode mathématiquement rigoureuse permettant de résoudre ce problème et d&amp;rsquo;autres du même type&lt;/p&gt;
&lt;h4 id="solution-générale"&gt;Solution Générale&lt;/h4&gt;
&lt;p&gt;Chaque pesée peut donner 3 résultats : équilibré (noté 0), penche à gauche (noté 1) ou penche à droite (note 2)&lt;/p&gt;
&lt;p&gt;Comme on a 3 pesées, le résultat des 3 pesées peut être noté en ternaire (base 3) par un nombre à 3 chiffres : par exemple &amp;ldquo;201&amp;rdquo; signifie : 1ère pesée penche à droite, seconde équilibrée, troisième à gauche.&lt;/p&gt;
&lt;p&gt;Entre parenthèses, l’information contenue dans ce nombre est suffisante pour que l’on puisse distinguer à la fois quelle boule est truquée et dans quel sens : en effet il y a 3^3=27 combinaisons de pesées possible alors qu’il y a 12*2=24 possibilités de solutions.&lt;/p&gt;
&lt;p&gt;Il suffit donc de &amp;ldquo;coder&amp;rdquo; les 12 balles par deux nombres en base 3, l’un donnant la séquence de pesée correspondant si la balle en question est trop lourde, l’autre la séquence correspondant à une bille trop légère. Evidemment, ces deux nombres en ternaire doivent êtres tels que les 1 du premier nombre sont des 2 dans le second et vice versa. De plus, il faut veiller à ce que le nombre de &amp;ldquo;1&amp;rdquo; dans chaque colonne des nombres ternaires corrresponde au nombre de &amp;ldquo;2&amp;rdquo;. Voici un codage possible :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bille 1 2 3 4 5 6 7 8 9 10 11 12
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;trop lourde 001 010 011 012 100 101 102 220 222 221 210 122
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;trop legere 002 020 022 021 200 202 201 110 111 112 120 211
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En lisant la table, on détermine les 3 pesées à effectuer de la manière suivante : si le chiffre correspondant du code &amp;ldquo;trop lourde&amp;rdquo; est un 1, la bille est placée à gauche, si c’est un 2 elle est placée à droite, si c’est un 0 elle n’est pas présente dans la pesée :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pesée à gauche à droite
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1 5+6+7+12 8+9+10+11
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2 2+3+4+11 8+9+10+12
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3 1+3+6+10 4+7+9+12
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="exemple"&gt;Exemple&lt;/h4&gt;
&lt;p&gt;Si vous ne croyez pas la démonstration ci-dessus, il ne reste plus qu’à vérifier de la manière suivante. par exemple :&lt;/p&gt;
&lt;p&gt;Si la bille 10 est trop légère, alors en consultant la table des pesées on voit que la balance penchera à gauche à la première pesée, à gauche à la seconde et à droite à la troisième, ce qui donne &amp;ldquo;112&amp;rdquo;. En regardant la table des codes on voit que &amp;ldquo;112&amp;rdquo; correspond effectivement à &amp;ldquo;bille 10 trop légère&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Si les trois pesées penchent successivement à droite, puis à gauche, puis est équilibrée (code 210), on voit dans la table des codes que ça correspond à &amp;ldquo;bille 11 trop lourde&amp;rdquo;. En consultant la table des pesées, on voit que la bille 11 est effectivement à droite à la première pesée, à gauche à la seconde et n’apparaît pas à la troisième.&lt;/p&gt;
&lt;p&gt;Pour voir si vous avez compris, montrez qu’avec 5 pesées on peut trouver une bille truquée parmi 39&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;publié lundi 21 juin 1999 dans le journal interne de Charmilles Technologies&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>