Tower Hanoi
Seperti yang kita ketahui mengenai Nama menara yang di sebut sebagai "Tower of Hanoi" adalah Menara Hanoi. Menara Hanoi ini adalah sebuah permainan matematis atau teka-teki. Permainan ini terdiri dari tiga tiang dan sejumlah cakram dengan ukuran berbeda-beda yang bisa dimasukkan ke tiang mana saja. Permainan dimulai dengan cakram-cakram yang tertumpuk rapi berurutan berdasarkan ukurannya dalam salah satu tiang, cakram terkecil diletakkan teratas, sehingga membentuk kerucut.
Tujuan dari teka-teki ini adalah untuk memindahkan seluruh tumpukan ke tiang yang lain, mengikuti aturan berikut:
> Hanya satu cakram yang boleh dipindahkan dalam satu waktu.
> Setiap perpindahan berupa pengambilan cakram teratas dari satu tiang dan memasukkannya ke tiang lain, di atas cakram lain yang mungkin sudah ada di tiang tersebut.
> Tidak boleh meletakkan cakram di atas cakram lain yang lebih kecil.
Untuk menyelesaikan puzzle di atas dalam pemrograman, kita dapat menggunakan teknik rekursif. Rekursif adalah fungsi atau prosedure yang dapat memanggil dirinya sendiri.
Jadi algoritmanya adalah …
Contoh program C++
Outputnya adalah
Sekian informasi yang dapat saya berikan, apabila terdapat kekeliruan mohon kritik dan sarannya. Akhir kata saya ucapkan terima kasih sudah berkunjung
Tujuan dari teka-teki ini adalah untuk memindahkan seluruh tumpukan ke tiang yang lain, mengikuti aturan berikut:
> Hanya satu cakram yang boleh dipindahkan dalam satu waktu.
> Setiap perpindahan berupa pengambilan cakram teratas dari satu tiang dan memasukkannya ke tiang lain, di atas cakram lain yang mungkin sudah ada di tiang tersebut.
> Tidak boleh meletakkan cakram di atas cakram lain yang lebih kecil.
Untuk menyelesaikan puzzle di atas dalam pemrograman, kita dapat menggunakan teknik rekursif. Rekursif adalah fungsi atau prosedure yang dapat memanggil dirinya sendiri.
Jadi algoritmanya adalah …
FUNCTION
MoveTower(disk, source, dest, spare):
IF
disk == 0, THEN:
move disk from source to dest
ELSE:
MoveTower(disk - 1, source, spare,
dest) // Step 1 above
move disk from source to dest // Step 2 above
MoveTower(disk - 1, spare, dest,
source) // Step 3 above
END
IF
Contoh program C++
#include<iostream> using namespace std; void MenaraHanoi(int N, char asal, char bantu, char tujuan); int main() {int piringan; cout<< "\nPROGRAM MENARA HANOI\n"; cout<< "--------------------\n\n"; cout<< "Banyaknya piringan: "; cin >> piringan; cout<< endl; MenaraHanoi(piringan,'A','B','C'); return 0; } void MenaraHanoi(int N, char asal, char bantu, char tujuan) { if(N == 1) cout<<"Piringan 1 dari "<<asal<< " ke " << tujuan <<endl; else { MenaraHanoi(N-1,asal,tujuan, bantu); cout<<"Piringan " << N <<" dari " << asal << " ke " << tujuan<<endl; MenaraHanoi(N-1, bantu, asal, tujuan); } }
Sekian informasi yang dapat saya berikan, apabila terdapat kekeliruan mohon kritik dan sarannya. Akhir kata saya ucapkan terima kasih sudah berkunjung
Komentar
Posting Komentar