{"id":1920,"date":"2024-04-04T14:42:02","date_gmt":"2024-04-04T12:42:02","guid":{"rendered":"https:\/\/actilud.com\/info\/?p=1920"},"modified":"2025-04-02T15:28:51","modified_gmt":"2025-04-02T13:28:51","slug":"la-machine-de-turing-defis-de-perfectionnement","status":"publish","type":"post","link":"https:\/\/actilud.com\/info\/blog\/la-machine-de-turing-defis-de-perfectionnement\/","title":{"rendered":"La machine de Turing : d\u00e9fis de perfectionnement"},"content":{"rendered":"<h1>D\u00e9placer les pommes !<\/h1>\n<p>Eh oui, notre machine peut aussi transporter des fruits !<\/p>\n<p>Soit une collection C={pomme, poire, raisin, =, blanc, X }.<\/p>\n<p>Poser plusieurs pommes, poires et raisins cons\u00e9cutivement dans les cases, en prenant soin de les m\u00e9langer. Il ne doit pas y avoir de blanc entre les fruits. On termine la s\u00e9rie par le signe =. La t\u00eate doit commencer <em>sur <\/em>le signe \u00e9gal.<\/p>\n<p>Objectif: d\u00e9placer toutes les pommes apr\u00e8s le signe =.<\/p>\n<p>\u00c0 la fin, la t\u00eate doit s&rsquo;arr\u00eater sur le signe \u00e9gal.<\/p>\n<figure id=\"attachment_1872\" aria-describedby=\"caption-attachment-1872\" style=\"width: 1029px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1872 \" src=\"https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes.png\" alt=\"\" width=\"1029\" height=\"189\" srcset=\"https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes.png 1252w, https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes-300x55.png 300w, https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes-1024x188.png 1024w, https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes-768x141.png 768w, https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes-720x132.png 720w\" sizes=\"auto, (min-width: 960px) 75vw, 100vw\" \/><figcaption id=\"caption-attachment-1872\" class=\"wp-caption-text\">Avant et apr\u00e8s traitement.<\/figcaption><\/figure>\n<p>Si vous observez la collection, vous verrez le signe X en plus des autres. \u00c0 quoi peut-il bien servir ? \u00c0 vous de le d\u00e9couvrir&#8230;<\/p>\n<details>\n<summary>Description du fonctionnement (cliquez pour voir, si vraiment vous n&rsquo;y arrivez pas&#8230;)<\/summary>\n<p>La t\u00eate commence par se rendre \u00e0 gauche. Si elle trouve une pomme, elle la remplace par un X, puis se d\u00e9place vers la droite jusqu&rsquo;\u00e0 la premi\u00e8re case vide. L\u00e0, elle \u00e9crit une pomme, puis elle se rend sur le signe =, o\u00f9 elle recommence le processus. Si elle trouve une poire, un raisin ou un X, elle continue vers la gauche. Si elle finit par tomber sur une case vide, elle se d\u00e9place vers la droite et supprime tous les X au passage; elle s&rsquo;arr\u00eate sur le signe =.<\/p>\n<\/details>\n<h1>Compter un petit nombre de pommes !<\/h1>\n<p>Soit une collection C={pomme, =, \u2610, X, [1-9]}.<\/p>\n<p>Placer entre 1 et 9 pommes cons\u00e9cutivement sur la bande, suivies par le signe \u00ab\u00a0=\u00a0\u00bb. Au d\u00e9but et \u00e0 la fin du traitement, la t\u00eate doit se trouver sur le signe =. \u00c0 la fin du traitement, le nombre de pommes doit appara\u00eetre dans la case qui suit le signe =. L&rsquo;id\u00e9e est de remplacer provisoirement les pommes par un signe X.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1880 aligncenter\" src=\"https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes2.png\" alt=\"\" width=\"846\" height=\"242\" srcset=\"https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes2.png 846w, https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes2-300x86.png 300w, https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes2-768x220.png 768w, https:\/\/actilud.com\/info\/wp-content\/uploads\/2024\/03\/turing_pommes2-720x206.png 720w\" sizes=\"auto, (min-width: 960px) 75vw, 100vw\" \/><\/p>\n<details>\n<summary>Description du fonctionnement<\/summary>\n<p>La t\u00eate se rend d&rsquo;abord \u00e0 gauche. Si elle tombe sur une pomme, elle la remplace par un X, se rend \u00e0 droite du signe = et l\u00e0, elle \u00e9crit un 1 si la case est vide, ou, si la case contient d\u00e9j\u00e0 un chiffre entre 1 et 8, elle l&rsquo;incr\u00e9mente. Puis elle recommence le processus. Si, en allant \u00e0 gauche, la t\u00eate rencontre un X, elle continue \u00e0 gauche. Si elle rencontre un blanc, elle retourne sur le signe = en transformant au passage tous les X en pommes. L\u00e0 elle s&rsquo;arr\u00eate. Pour r\u00e9aliser une incr\u00e9mentation, il suffit de remplacer le chiffre lu par le chiffre imm\u00e9diatement sup\u00e9rieur : s&rsquo;il y a un 1, on met un 2, s&rsquo;il y a un 2, on met un 3, etc.<\/p>\n<\/details>\n<h1>Incr\u00e9menter un nombre isol\u00e9 sur la bande<\/h1>\n<p>Nous aurons souvent besoin de cr\u00e9er des compteurs. Aussi, ce d\u00e9fi est important, car il est le point de d\u00e9part de probl\u00e8mes plus complexes. Soit un entier naturel N pos\u00e9 sur la bande, \u00e0 raison d&rsquo;un chiffre par case. La t\u00eate est positionn\u00e9e sur le chiffre des unit\u00e9s, donc le dernier \u00e0 droite. A la fin du traitement, l&rsquo;entier doit avoir la valeur N+1. La collection est C={[0-9],\u2610}. Peu importe l&#8217;emplacement d&rsquo;arr\u00eat.<\/p>\n<p>Vous l&rsquo;avez compris, la difficult\u00e9 r\u00e9side dans le passage des dizaines ! Alors, testez bien des nombres comme 9, 99, 999 ! Ce n&rsquo;est pas tr\u00e8s compliqu\u00e9 car on peut le r\u00e9aliser dans <em>un seul \u00e9tat !<\/em><\/p>\n<details>\n<summary>Description du fonctionnement<\/summary>\n<p>Si la t\u00eate rencontre un chiffre de 0 \u00e0 8, elle le remplace par le chiffre imm\u00e9diatement plus grand, et on s&rsquo;arr\u00eate. Si elle lit un 9, elle le remplace par un 0, va \u00e0 gauche et le processus recommence. Si elle lit un blanc, elle place un 1 et on s&rsquo;arr\u00eate. Et voil\u00e0&#8230;<\/p>\n<\/details>\n<h1>Incr\u00e9menter un nombre qui se trouve imm\u00e9diatement \u00e0 droite du signe =<\/h1>\n<p>Cette fois la t\u00e2che est un peu plus complexe. Souvent, nos compteurs se retrouvent juste \u00e0 droite du signe \u00ab\u00a0=\u00a0\u00bb; c&rsquo;est le cas du probl\u00e8me \u00ab\u00a0compteur de pommes\u00a0\u00bb pr\u00e9c\u00e9dent. Notre compteur doit \u00eatre capable de s&rsquo;incr\u00e9menter derri\u00e8re le signe =, <em>quel que soit le nombre de pommes<\/em>. Or, lorsqu&rsquo;il passe de 9 \u00e0 10, de 99 \u00e0 100, de 999 \u00e0 1000, etc, le nombre ne peut pas s&rsquo;\u00e9tendre vers la gauche, \u00e0 cause du signe \u00ab\u00a0=\u00a0\u00bb et des pommes qui lui barrent le passage.<\/p>\n<p>Votre t\u00e2che est de r\u00e9aliser un programme universel d&rsquo;incr\u00e9mentation de nombre qui s&rsquo;\u00e9tend <em>vers la droite. <\/em>Situation de d\u00e9part: sur le dernier chiffre du nombre. L&#8217;emplacement d&rsquo;arr\u00eat n&rsquo;a pas d&rsquo;importance. La collection est C={[0-9],\u2610}.\u00a0 Ce programme doit traiter les cas particuliers de d\u00e9calage vers la droite lorsque le nombre s&rsquo;allonge d&rsquo;un chiffre.\u00a0 Notre \u00ab\u00a0incr\u00e9menteur universel\u00a0\u00bb n\u00e9cessite seulement 3 \u00e9tats, ce n&rsquo;est donc pas d&rsquo;une grande complexit\u00e9.<\/p>\n<p>Exemples : =9 devient =10, =99 devient =100, =9999 devient =10000 etc, mais =7 devient =8, =299 devient =300&#8230;<\/p>\n<p>Note: si vous voulez r\u00e9utiliser la machine dans un autre programme, il vaut mieux que la position finale de la t\u00eate soit toujours la m\u00eame.\u00a0 Je sugg\u00e8re de s&rsquo;arr\u00eater toujours <em>sur le signe =.<\/em><\/p>\n<p>Bon courage.<\/p>\n<details>\n<summary>Si vous n&rsquo;y parvenez pas, voici le listage avec arr\u00eat dans le nombre (spoiler !)<\/summary>\n<blockquote><p>Machine\u00a0: [Incr\u00e9menteurUniversel]<br \/>\n# Incr\u00e9mente un entier naturel qui se trouve directement derri\u00e8re le signe \u00ab\u00a0=\u00a0\u00bb.<br \/>\n# D\u00e9but\u00a0: sur la donn\u00e9e la plus \u00e0 droite<br \/>\n# Fin\u00a0: sur une des donn\u00e9es<\/p>\n<p>\u00c9tat\u00a0: q0<br \/>\nq0, 0 , 1 , stop<br \/>\nq0, 1 , 2 , stop<br \/>\nq0, 2 , 3 , stop<br \/>\nq0, 3 , 4 , stop<br \/>\nq0, 4 , 5 , stop<br \/>\nq0, 5 , 6 , stop<br \/>\nq0, 6 , 7 , stop<br \/>\nq0, 7 , 8 , stop<br \/>\nq0, 8 , 9 , stop<br \/>\nq0, \u2610 , 1 , stop<br \/>\nq0, 9 , 0 , \u2190 , q0<br \/>\nq0, &lsquo;=&rsquo; , &lsquo;=&rsquo; , \u2192 , q1<\/p>\n<p>\u00c9tat\u00a0: q1<br \/>\nq1, 0 , 1 , \u2192 , q2<\/p>\n<p>\u00c9tat\u00a0: q2<br \/>\nq2, 0 , 0 , \u2192 , q2<br \/>\nq2, \u2610 , 0 , stop<\/p><\/blockquote>\n<\/details>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>D\u00e9placer les pommes ! Eh oui, notre machine peut aussi transporter des fruits ! Soit une collection C={pomme, poire, raisin, =, blanc, X }. Poser plusieurs pommes, poires et raisins cons\u00e9cutivement dans les cases, en prenant soin de les m\u00e9langer. Il ne doit pas y avoir de blanc entre les fruits. On termine la s\u00e9rie [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"class_list":["post-1920","post","type-post","status-publish","format-standard","hentry","category-machine-de-turing-les-defis"],"_links":{"self":[{"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/posts\/1920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/comments?post=1920"}],"version-history":[{"count":30,"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/posts\/1920\/revisions"}],"predecessor-version":[{"id":2748,"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/posts\/1920\/revisions\/2748"}],"wp:attachment":[{"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/media?parent=1920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/categories?post=1920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/actilud.com\/info\/wp-json\/wp\/v2\/tags?post=1920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}