Machines de Turing

Voilà un petit cadeau:

Depuis que les ordinateurs sont puissants, les OS controlent entierement les cartes graphiques, donc je ne peux pas vous proposer de version "modernes" du spectacle suivant!

Les ordinateurs actuels exécutent des milliards d'opérations par seconde. Un ordinateur n'est rien d'autre qu'une machine de Turing

But du jeu: "voir la bande" (où la petite tête de la machine se promène et change les cases. 1 million de petites cases changées par seconde, c'est tentant de la voir en live...

Le petit programme suivant, qui s'exécute automatiquement sous dos en pplein écran (vous n'avez rien à faire) met provisoirement votre PC en mode 320×200 et 256 couleurs (juste ce qu'il faut pour q'un segment ancienne version tienne sur l'écran (64000 cases).

Le premier nombre à entrer est le nb d'opération: si vous voulez voir quelque chose entrez un nombre entre 10000000 et 100000000.

Le deuxième est le nombre d'état de la machine: entrez pas plus que 7 (vous pouvez aller jusqu'à 19 sans bug, mais elles deviennent trop subtiles). Le troisième est l'"alphabet": (nombre de couleurs). Essayez 5 (jusqu'à 255 possible).

Vous verrez alors une machine de Turing s'exécuter en live à environ 1000000 cases changées par seconde. Le programme les choisit au hasard et les change toutes les 300000 opérations: sinon bcp d'entre elles font rien (ou efface la bande)...




http://www.logique.jussieu.fr/~chalons/TURING.EXE
Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi

Réponses

  • Pensez à mettre le programme à un endroit où le chemin ne comporte aucune espace...
  • Désolé, je voulais le faire avant, mais... grosses occupations.

    Voilà le programme (en pascal pour DOS, version 7)
    Il se télécharge facilement sur le net (le TPascal 7, je veux dire)
    **************
    program essaitur;
    uses dos, crt;
    
    type reac=record
    change:byte;
    mouv:byte;
    eta:byte;
    end;
    
    var i:longint;
    var t:array[0..64000] of byte absolute $A000:0000;
    var cur:longint;
    var etat:byte;
    
    mem:array[0..20,0..255] of reac;
    
    procedure initializgraph;
    begin
    [/i]asm
      mov ah,0
      mov al,$13
      int $10
    end [i];
    end;
    
    procedure turing(n,m:byte);
    var i,j:byte;
    begin
      for i:=0 to 20 do
      begin
        for j:=0 to 255 do
        begin
          mem[i,j].change:=random(m);
          mem[i,j].mouv:=random(3);
          mem[i,j].eta:=random(n);
        end;
      end;
    end;
    
    procedure deplace(c:byte);
    begin
      if c=0 then if cur>0 then dec(cur) else cur:=64000
      else if c=2 then if cur<64000 then inc(cur) else cur:=0;
    end;
    
    procedure pas;
    var a,c:byte;
    begin
      a:=t[cur];
      t[cur]:=mem[etat,a].change;
      c:=mem[etat,a].mouv;
      etat:=mem[etat,a].eta;
      deplace(c);
    end;
    
    var max,j:longint;n,m:byte;
    begin
      randomize;
      cur:=32000;
    
      etat:=0;
      writeln('nombre operations a raison d1 million/s');
    
      readln(max);
      writeln('nombre etats de la turing machine');
      readln(n);
      writeln('nombre de couleurs reconnues');
      read(m);
      turing(n,m);
      initializgraph;
      for j:=0 to 64000 do t[j]:=j mod 256;
      for j:=1 to max do
      begin
        pas;
        if j mod 300000=0 then  turing(n,m);
      end;
      readln;
    end.
    

    [La fonte italique est-elle indispensable pour le code ? AD]
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Je fais remonter le fil.

    Réponse à AD: non, j'avoue, je sais pas pourquoi j'ai mis le code en italique, peut-être pour l'isoler du reste, mais bon, il n'y avait pas de risque de confusion

    Je fais remonter le fil, je me lasse pas d'admirer le spectacle...

    Un conseil: si vos PC sont modernes et rapides, essayez 300000000 d'opérations, 3 états et 11 couleurs.
    Et entrez dans la matrice...

    vous pouvez cliquer sur "executer" directement, pas vraiment besoin de l'enregistrer, de toute façon, je le laisserai éternellement sur mon site à ce lien

    http://www.logique.jussieu.fr/~chalons/TURING.EXE
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
Connectez-vous ou Inscrivez-vous pour répondre.