Pour célébrer l'anniversaire d'Alan Turing, Google a publié un doodle montrant une machine. Quel type de machine est le doodle? Peut-il exprimer une langue Turing Complete?
Il existe des différences évidentes avec la machine de turing classique: une bande finie, des contraintes dans la façon dont l'état peut être connecté, ...
Le doodle est toujours disponible ici
(L'affichage en haut à droite montre la sortie attendue.)
La bande au milieu est divisée en carrés pouvant contenir un blanc, un zéro ou un. La tête est positionnée au-dessus de l'un des carrés et est utilisée pour la lecture et l'écriture.
Sous la bande, vous pouvez voir une flèche verte sur laquelle vous pouvez cliquer pour démarrer la machine. Il y a deux lignes de cercles à côté, dont certaines sont connectées. Je les appellerai "états".
Après le démarrage de la machine, le premier état à droite du bouton vert s'allume, puis le suivant à droite, et ainsi de suite ... Chaque état contient l'une des commandes suivantes:
- vide = ne rien faire (passer simplement à l'état suivant)
- 1 = écrire un sur la bande à la position actuelle de la tête
- 0 = écrire un zéro sur la bande à la position actuelle de la tête
- flèche vers la gauche = déplacer la tête d'un pas vers la gauche
- flèche vers la droite = déplacer la tête d'un pas vers la droite
- condition: si la valeur sous la tête est égale à la valeur indiquée dans le carré, descendez à la deuxième ligne d'états. sinon, passez à l'état suivant vers la droite
- saut à gauche: revenir à un état précédent (fixe) mais uniquement sur la ligne supérieure [J'avais initialement oublié celui-là, merci @Marzio!]
Il n'y a aucun moyen de "superposer" deux sauts (l'un sur l'autre). La machine s'arrête lorsqu'elle quitte un état et il n'y a pas d'état suivant à sa droite.
(Après l'arrêt de la machine, le contenu de la bande est comparé au contenu de l'écran, mais je ne considère pas que cela fait partie des fonctionnalités prévues de la machine.)