2
avr
1

Tri rapide et Tours de Hanoï en pascal ET en Javascript

Programmation en pascal

Dans cette article, єץσs Amine propose les programmes pascal du tri rapide ainsi que les tours de hanoï, kesako?
D’aprés Wikipédia: Le problème des tours de Hanoï est un jeu de réflexion imaginé par le mathématicien français Édouard Lucas, et consistant à déplacer des disques de diamètres différents d’une tour de « départ » à une tour d’« arrivée » en passant par une tour « intermédiaire » et ceci en un minimum de coups, tout en respectant les règles suivantes :

  • on ne peut déplacer plus d’un disque à la fois,
  • on ne peut placer un disque que sur un autre disque plus grand que lui ou sur un emplacement vide.

Tri rapide

Ce tri est applicable pour une trés grande liste.

program quicksort;
uses wincrt ;
const MAX_VAL = 200;

type tab_entier = array [1..MAX_VAL] of integer;
   var
   n:integer;
   t:tab_entier;

             Procedure Remplir(var n:integer;var t:tab_entier);
             var
             i:integer;
             begin
             repeat
             writeln('donner la taille du tableau');
             read(n)
             until (n>0) and (n deb alors le tableau nécessite d'être trié*)
   if (fin > deb) then begin
       (* choisir le milieu du tableau comme pivot *)
       mid := (deb + fin) div 2;

       (*
           mettre l'élément pivot au début afin de pouvoir parcourir
           le tableau en continu.
       *)
       aux := t[mid];
       t[mid] := t[deb];
       t[deb] := aux;

       (*
           parcourir le tableau tout en amenant les éléments infèrieurs à
           l'élément pivot au début de la plage
       *)
       p := deb;
       for i:=deb+1 to fin do begin
           if (t[i] < t[deb]) then begin
               p := p + 1;
               aux := t[i];
               t[i] := t[p];
               t[p] := aux;
           end;
       end;

       (*
           mettre le pivot à la position adéquate càd
           à la suite des éléments qui lui sont inférieurs
       *)
       aux := t[p];
       t[p] := t[deb];
       t[deb] := aux;

       tri_rapide(deb, p - 1, t); (* trie le sous tableau à gauche *)
       tri_rapide(p + 1, fin, t); (* trie le sous tableau à droite *)
   end;
end;
begin
remplir(n,t);
writeln('le tableau avant tri');
writeln;
affichage(n,t);
tri_rapide(1,n,t);
writeln;
writeln('le tableau trié est');
writeln;
affichage(n,t);
end.

Tours de Hanoï

Programme:

program hanoi_1;
uses wincrt;
var
n:integer;
{Algorithme de la Procedure Saisir}
Procedure Saisir(var n:integer);
begin
repeat
write('donner le nombre de disque');
readln(n);
until n>0;
end;
{Algorithme de la Procedure Hanoï}
Procedure Hanoi(n:integer; dep,inter,arr:char);
 begin
 if n>0 then
 begin
 hanoi(n-1,dep,arr,inter);
 writeln('deplacement de  ',dep,'  vers ',arr);
 hanoi(n-1,inter,dep,arr);
 end;
 end;
begin
saisir(n);
Hanoi(n,'A','B','C')
end.

et enfin…

Tours de Hanoï en JS (JavaScript)

Source compète:

Exemple plus bas…


function hanoi(n,deb,inter,fin)
{
if ((n>0) && (n<10)) {
	hanoi (n-1,inter,deb,fin);
	document.writeln('deplacement de '+deb+' vers '+fin+'');
	hanoi (n-1,deb,fin,inter);
};
};

Copyleft TuniLame. http://TuniLa.me

Exemple

Vous pouvez l’essayer en utilisant ce petit formulaire et en insérant un nombre de disques entre 1 et 9 (inclus):

Votre navigateur ne permet pas l’utilisation de iFrames.

Cliquez ici pour voir la page dans une nouvelle fenêtre!

Cet article vous a plu?
Abonnez-vous au flux RSS et vous aurez tous les nouveaux articles délivrés pour vous!
1 Comment:
  1. [...] This post was mentioned on Twitter by TuniLame. TuniLame said: Nouveau post sur TuniLa.me: Tri rapide et Tours de Hanoï en pascal http://bit.ly/bALZ11 [...]

Post your comment




Get Adobe Flash playerPlugin by wpburn.com wordpress themes
Celadon theme by the Themes Boutique