Selasa, 13 Maret 2012

Tower Of Hanoi

TOWER OF HANOI:
Tower of Hanoi adalah sebuah permainan matematik. Permainan ini terdiri dari tiga tiang dan sejumlah cakram yang berbeda ukuran yang dapat dipindah-pindahkan dari tiang satu ketiang lainnya. Permainan dimulai dengan setumpukan cakram di tiang pertama (S), dengan cakram terbesar dibagian bawah dan cakram terkecil dibagian atas.

Tujuan permainan ini adalah memindahkan seluruh cakaram yang berada di tiang S (Source) ke tiang D (Destination), tiang I (Intermediate) sebagai perantara.

Ketentuan/ aturan permainannya adalah sebagai berikut:
---Hanya satu cakram yang boleh dipindahkan dalam satu waktu.
---Setiap perpindahan berupa pengambilan cakram teratas dari satu tiang dan memindahkannya ketiang lain yang mungkin  belum atau sudah berisi cakram lain.
---Cakram yang ukurannya lebih besar, tidak boleh berada diatas cakram yang ukurannya lebih kecil.

Teka-teki ini ditemukan Édouard Lucas, ahli matematika Perancis di tahun 1883. Ada sebuah legenda tentang candi Indian yang berisi ruang besar dengan tiga tiang yang dikelilingi 64 cakram emas. Pendeta Brahma, melaksanakan tugas dari peramal di masa lalu, sesuai dengan aturan teka-teki ini. Menurut legenda ini, bila teka-teki ini diselesaikan, dunia akan kiamat. Tidak jelas benar apakah Lucas menemukan legenda ini atau terinspirasi olehnya.
Bila legenda ini benar, dan pendeta itu bisa memindahkan satu cakram tiap detik, menggunakan pemindahan paling sedikit, maka akan memakan waktu 264-1 detik atau kurang lebih 584,582 milyar tahun.



contoh coding
Procedure Hanoi (n:integer; A, B, C:char); 
begin
   If n=1 then
      Writeln('Pindahkan piringan dari ',A,' ke ',B)
   Else begin
      Hanoi(n-1,A,C,B);
      Writeln('Pindahkan piringan dari ',A,' ke ',B);
      Hanoi(n-1,C,B,A);
   End;
end;


ada juga yang seperti ini


/**
 * TowersOfHanoi.java
 * Created by Stijn Strickx on Aug. 12 2006
 * Copyright 2006 Stijn Strickx, All rights reserved
 */


import java.io.*;


public class TowersOfHanoi {


static int moves = 0;
static int totalDisks = 0;

public static void main(String[] arguments) throws java.io.IOException {
int disks;
char fromPole = 'A';
char withPole = 'B';
char toPole = 'C';
disks = getNumber("\nHow many disks are there on the tower? ");
totalDisks = disks;
if(totalDisks > 10){
System.out.println("Working...");
}
FileOutputStream fos = new FileOutputStream("TowersOfHanoiSolution.txt");
PrintStream ps = new PrintStream(fos);
solveHanoi(disks, fromPole, toPole, withPole, ps);
ps.close();
System.out.println();
System.out.println("\nAmount of moves: " + moves + "\n");
System.out.print("You can now access the TowersOfHanoiSolution.txt file");
System.out.println(" which is in the same directory as the .class file of this program.");
}

static void solveHanoi(int disks, char fromPole, char toPole, char withPole, PrintStream ps) {
if (disks >= 1) {
solveHanoi(disks-1, fromPole, withPole, toPole, ps);
moveDisk(fromPole, toPole, ps);
solveHanoi(disks-1, withPole, toPole, fromPole, ps);
}
}

static void moveDisk(char fromPole, char toPole, PrintStream ps) {
moves++;
if(totalDisks <= 10){
System.out.print("Move from " + fromPole + " to " + toPole + ". ");
ps.print("Move from " + fromPole + " to " + toPole + ". ");
if (moves%4 == 0){
System.out.println();
ps.println();
}
}
else {
ps.print("Move from " + fromPole + " to " + toPole + ". ");
if (moves%4 == 0){
ps.println();
}
}
}

static int getNumber(String question) throws java.io.IOException {
String theNumber;
int number = 0;
BufferedReader in = new BufferedReader (new InputStreamReader(System.in));
System.out.print(question);
theNumber = in.readLine();
System.out.println();
number = Integer.parseInt(theNumber);
return number;
}
}



http://id.wikipedia.org/wiki/Menara_Hanoi
http://centralprogrammer.com/article/tower-hanoi
http://tlpuzzle.weebly.com/tower-of-hanoi.html
http://www.proglogic.com/code/java/puzzle/towersofhanoi.php


Minggu, 25 Desember 2011

coding OOP skema Inheritance

package oop;
class manusia{
    private String nama;
    manusia(){
    }
    void aku_petrus (String c){
        nama = c;
    }
    void get_petrus(String c){
        nama = c;
    }
    void get_petrus(){
        System.out.println("nama - " + nama);
    }
}
class mahasiswa extends manusia{
    private int npm;
    private double ipk;
   mahasiswa(){
    }
    void nyo_aku (int id, double ip){
        npm = id;
        ipk = ip;
    }
    void get_nyo_aku (int id, double ip){
        npm = id;
        ipk = ip;
    }
    void get_who(){
       System.out.println("NPM - "+npm);
       System.out.println("IPK - "+ipk);
    }
}
    class pekerja extends mahasiswa {
        private int id;
        private String gaji;
        pekerja(){

        }
        void petrus_kane(int a, String s){
            id = a;
            gaji = s;
        }
        void get_petrus_kane(int a, String s){
            id = a;
            gaji = s;
        }
        void get_petrus_kane(){
            System.out.println("id - " +id);
            System.out.println("gaji - "+gaji);
        }
    }
public class Main {
 public static void main(String[] args) {
       manusia tra = new manusia ();
       tra.aku_petrus("PETRUS");
       tra.get_petrus();
       mahasiswa mm = new mahasiswa ();
       mm.get_nyo_aku(1135010005, 3.70);
       mm.get_who();
       pekerja plang = new pekerja ();
       plang.get_petrus_kane(0024, "6.000.000");
       plang.get_petrus_kane();
 }
}



OUTPUT:
nama - petrus
NPM - 1135010005
IPK - 3.7
id - 05
gaji - 6.000.000
BUILD SUCCESSFUL (total time: 0 seconds)