Ne znam jeste li culi nekad za problem HANOI KULA.
Problem se sastoji u tome sto imate tri uspravna stapa na kojima stoje diskovi. Na pocetku se svi diskovi nalaze na pocetnom stapu A. Inace svi diskovi su razlicite velicine i poredjani su od najmanjeg ka najvecem (prema dolje). Zadatak je sve diskove prebaciti sa stapa A na stap C uz koriscenje stapa B i pri tom se svaki put moze uzeti samo jedan disk. Jos jedna mala otezavajuca okolnost je da svaki put iznad nekog diska mozete staviti samo veci disk.
Ne znam koliko sam uspio da vam objasnim ovaj problem ali evo pokusacu i slikom pa se nadam da cete shvatiti.

Slika nije bas najsrecnija ali to vam je sto vam je.
Za ovaj problem vezana je i legenda koja kaze:
Bog je rekao nekom monahu da ce biti smak svijeta ili apokalipsa kada on rijesi ovaj problem ali sa 64 diska. Izgleda da monah i dalje prebacuje ali trebace mu vremena. Za 64 diska potrebno je (2 na 64)-1 prebacivanja tako ako bi uzeli da je njemu za jedan disk potrebno 1 sekund on bi to trebao da radi 18446744073709551616 sekundi ili 583344214028 godina. Tako da nam je ipak ostalo jos vremena.
Za one koje zanima evo kod programa koji stamapa sva potrebna prebacivanja pa koga ne mrzi neka isproba (nemojte pokusavati sa prevelikum brojevima jer cete se nacekati).
program kule1;
var
n:integer;
procedure hanoi(n:integer; sa,na,pomocu:char);
begin
if n>0 then
begin
hanoi(n-1,sa,pomocu,na);
writeln(' Prebaci disk sa stapa ',sa,' na stap ',na);
hanoi(n-1,pomocu,na,sa);
end;
end;
begin
write(' n= ');readln(n);
hanoi(n, 'A','C','B');
readln;
end.
Za ove koji ce mozda pokusati ovo da rijese rucno evo im resenje za 4 diska.
Pocetak
Sa A na B
sa A na C
sa B na C
sa A na B
sa C na A
sa C na B
sa A na B
sa A na C
sa B na C
sa B na A
sa C na A
sa B na C
sa A na B
sa A na C
sa B na C
kraj.
Kao sto vidite za 4 diska potrebno je 15 prebacivanja ili (2 na 4)-1.
Sreca sto monah nije ucio PASCAL ko zna bil nas sad bilo. Sala naravno.