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

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!
Abonnez-vous au flux RSS et vous aurez tous les nouveaux articles délivrés pour vous!
[...] 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 [...]